d78f150336
Phrase parsing is out of scope for this branch. It will be implemented at the same time as function parsing.
76 lines
1.2 KiB
Go
76 lines
1.2 KiB
Go
package parser
|
|
|
|
import "io"
|
|
import "testing"
|
|
// import "git.tebibyte.media/sashakoshka/arf/types"
|
|
|
|
func checkTree (modulePath string, correct string, test *testing.T) {
|
|
tree, err := Parse(modulePath)
|
|
treeString := tree.ToString(0)
|
|
|
|
test.Log("CORRECT TREE:")
|
|
test.Log(correct)
|
|
test.Log("WHAT WAS PARSED:")
|
|
test.Log(treeString)
|
|
|
|
if err != io.EOF && err != nil {
|
|
test.Log("returned error:")
|
|
test.Log(err.Error())
|
|
test.Fail()
|
|
return
|
|
}
|
|
|
|
if treeString != correct {
|
|
test.Log("trees not equal!")
|
|
test.Fail()
|
|
return
|
|
}
|
|
}
|
|
|
|
func TestMeta (test *testing.T) {
|
|
checkTree ("../tests/parser/meta",
|
|
`:arf
|
|
author "Sasha Koshka"
|
|
license "GPLv3"
|
|
require "someModule"
|
|
require "otherModule"
|
|
---
|
|
`, test)
|
|
}
|
|
|
|
func TestData (test *testing.T) {
|
|
checkTree ("../tests/parser/data",
|
|
`:arf
|
|
---
|
|
data wr integer:Int 3202
|
|
data wr integerArray16:{Int 16}
|
|
data wr integerArrayInitialized:{Int 16}
|
|
3948
|
|
293
|
|
293049
|
|
948
|
|
912
|
|
340
|
|
0
|
|
2304
|
|
0
|
|
4785
|
|
92
|
|
data wr integerArrayVariable:{Int ..}
|
|
data wr integerPointer:{Int}
|
|
data wr mutInteger:Int:mut 3202
|
|
data wr mutIntegerPointer:{Int}:mut
|
|
data wr nestedObject:Obj
|
|
.that
|
|
.bird2 123.8439
|
|
.bird3 9328.21348239
|
|
.this
|
|
.bird0 324
|
|
.bird1 "hello world"
|
|
data wr object:Obj
|
|
.that 2139
|
|
.this 324
|
|
`, test)
|
|
}
|
|
|