data-section #3
@ -1,21 +1,26 @@
 | 
				
			|||||||
package parser
 | 
					package parser
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import "reflect"
 | 
					import "io"
 | 
				
			||||||
import "testing"
 | 
					import "testing"
 | 
				
			||||||
import "git.tebibyte.media/sashakoshka/arf/types"
 | 
					// import "git.tebibyte.media/sashakoshka/arf/types"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func checkTree (modulePath string, correct *SyntaxTree, test *testing.T) {
 | 
					func checkTree (modulePath string, correct string, test *testing.T) {
 | 
				
			||||||
	tree, err := Parse(modulePath)
 | 
						tree, err := Parse(modulePath)
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	if err != nil {
 | 
						if err != io.EOF {
 | 
				
			||||||
		test.Log("returned error:")
 | 
							test.Log("returned error:")
 | 
				
			||||||
		test.Log(err.Error())
 | 
							test.Log(err.Error())
 | 
				
			||||||
		test.Fail()
 | 
							test.Fail()
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if !reflect.DeepEqual(tree, correct) {
 | 
						treeString := tree.ToString(0)
 | 
				
			||||||
		test.Log("trees not equal")
 | 
						if treeString != correct {
 | 
				
			||||||
 | 
							test.Log("trees not equal!")
 | 
				
			||||||
 | 
							test.Log("CORRECT TREE:")
 | 
				
			||||||
 | 
							test.Log(correct)
 | 
				
			||||||
 | 
							test.Log("WHAT WAS PARSED:")
 | 
				
			||||||
 | 
							test.Log(treeString)
 | 
				
			||||||
		test.Fail()
 | 
							test.Fail()
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -37,79 +42,13 @@ func quickIdentifier (trail ...string) (identifier Identifier) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestMeta (test *testing.T) {
 | 
					func TestMeta (test *testing.T) {
 | 
				
			||||||
	checkTree ("../tests/parser/meta", &SyntaxTree {
 | 
					 | 
				
			||||||
		license: "GPLv3",
 | 
					 | 
				
			||||||
		author:  "Sasha Koshka",
 | 
					 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
		requires: []string {
 | 
						checkTree ("../tests/parser/meta",
 | 
				
			||||||
			"someModule",
 | 
					`:arf
 | 
				
			||||||
			"otherModule",
 | 
					author "Sasha Koshka"
 | 
				
			||||||
		},
 | 
					license "GPLv3"
 | 
				
			||||||
	}, test)
 | 
					require "someModule"
 | 
				
			||||||
}
 | 
					require "otherModule"
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
func TestData (test *testing.T) {
 | 
					`, test)
 | 
				
			||||||
	tree := &SyntaxTree {
 | 
					 | 
				
			||||||
		dataSections: []DataSection {
 | 
					 | 
				
			||||||
			DataSection {
 | 
					 | 
				
			||||||
				name: "integer",
 | 
					 | 
				
			||||||
				permission: types.PermissionFrom("wr"),
 | 
					 | 
				
			||||||
				
 | 
					 | 
				
			||||||
				what: Type {
 | 
					 | 
				
			||||||
					kind: TypeKindBasic,
 | 
					 | 
				
			||||||
					name: quickIdentifier("Int"),
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				value: []Argument {
 | 
					 | 
				
			||||||
					Argument {
 | 
					 | 
				
			||||||
						what: ArgumentKindUInt,
 | 
					 | 
				
			||||||
						value: 3202,
 | 
					 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			DataSection {
 | 
					 | 
				
			||||||
				name: "integerPointer",
 | 
					 | 
				
			||||||
				permission: types.PermissionFrom("wr"),
 | 
					 | 
				
			||||||
				
 | 
					 | 
				
			||||||
				what: Type {
 | 
					 | 
				
			||||||
					kind: TypeKindPointer,
 | 
					 | 
				
			||||||
					points: &Type {
 | 
					 | 
				
			||||||
						kind: TypeKindBasic,
 | 
					 | 
				
			||||||
						name: quickIdentifier("Int"),
 | 
					 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				value: []Argument {
 | 
					 | 
				
			||||||
					Argument {
 | 
					 | 
				
			||||||
						what:  ArgumentKindUInt,
 | 
					 | 
				
			||||||
						value: 3202,
 | 
					 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			DataSection {
 | 
					 | 
				
			||||||
				name: "integerArray16",
 | 
					 | 
				
			||||||
				permission: types.PermissionFrom("wr"),
 | 
					 | 
				
			||||||
				
 | 
					 | 
				
			||||||
				what: Type {
 | 
					 | 
				
			||||||
					kind: TypeKindArray,
 | 
					 | 
				
			||||||
					points: &Type {
 | 
					 | 
				
			||||||
						kind: TypeKindBasic,
 | 
					 | 
				
			||||||
						name: quickIdentifier("Int"),
 | 
					 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
					length: Argument {
 | 
					 | 
				
			||||||
						what:  ArgumentKindUInt,
 | 
					 | 
				
			||||||
						value: 16,
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				value: []Argument {
 | 
					 | 
				
			||||||
					Argument {
 | 
					 | 
				
			||||||
						what:  ArgumentKindUInt,
 | 
					 | 
				
			||||||
						value: 3202,
 | 
					 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	checkTree ("../tests/parser/data", tree, test)
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user