Split tests into multiple files
This should make it easier to work on sections independantly of one another without creating merge conflicts
This commit is contained in:
parent
0d366964ca
commit
b64fbd9fc4
21
face_test.go
Normal file
21
face_test.go
Normal file
@ -0,0 +1,21 @@
|
||||
package parser
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestFace (test *testing.T) {
|
||||
checkTree ("../tests/parser/face",
|
||||
`:arf
|
||||
---
|
||||
face ro Destroyer:Face
|
||||
destroy
|
||||
face ro ReadWriter:Face
|
||||
read
|
||||
> into:{Byte ..}
|
||||
< read:Int
|
||||
< err:Error
|
||||
write
|
||||
> data:{Byte ..}
|
||||
< wrote:Int
|
||||
< err:Error
|
||||
`, test)
|
||||
}
|
38
parser/data_test.go
Normal file
38
parser/data_test.go
Normal file
@ -0,0 +1,38 @@
|
||||
package parser
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestData (test *testing.T) {
|
||||
checkTree ("../tests/parser/data",
|
||||
`:arf
|
||||
---
|
||||
data ro integer:Int 3202
|
||||
data ro integerArray16:{Int 16}
|
||||
data ro integerArrayInitialized:{Int 16}
|
||||
3948
|
||||
293
|
||||
293049
|
||||
948
|
||||
912
|
||||
340
|
||||
0
|
||||
2304
|
||||
0
|
||||
4785
|
||||
92
|
||||
data ro integerArrayVariable:{Int ..}
|
||||
data ro integerPointer:{Int}
|
||||
data ro mutInteger:Int:mut 3202
|
||||
data ro mutIntegerPointer:{Int}:mut
|
||||
data ro nestedObject:Obj
|
||||
.that
|
||||
.bird2 123.8439
|
||||
.bird3 9328.21348239
|
||||
.this
|
||||
.bird0 324
|
||||
.bird1 "hello world"
|
||||
data ro object:Obj
|
||||
.that 2139
|
||||
.this 324
|
||||
`, test)
|
||||
}
|
38
parser/enum_test.go
Normal file
38
parser/enum_test.go
Normal file
@ -0,0 +1,38 @@
|
||||
package parser
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestEnum (test *testing.T) {
|
||||
checkTree ("../tests/parser/enum",
|
||||
`:arf
|
||||
---
|
||||
enum ro AffrontToGod:{Int 4}
|
||||
bird0
|
||||
28394
|
||||
9328
|
||||
398
|
||||
9
|
||||
bird1
|
||||
23
|
||||
932832
|
||||
398
|
||||
2349
|
||||
bird2
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
enum ro NamedColor:U32
|
||||
red 16711680
|
||||
green 65280
|
||||
blue 255
|
||||
enum ro Weekday:Int
|
||||
sunday
|
||||
monday
|
||||
tuesday
|
||||
wednesday
|
||||
thursday
|
||||
friday
|
||||
saturday
|
||||
`, test)
|
||||
}
|
14
parser/meta_test.go
Normal file
14
parser/meta_test.go
Normal file
@ -0,0 +1,14 @@
|
||||
package parser
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestMeta (test *testing.T) {
|
||||
checkTree ("../tests/parser/meta",
|
||||
`:arf
|
||||
author "Sasha Koshka"
|
||||
license "GPLv3"
|
||||
require "someModule"
|
||||
require "otherModule"
|
||||
---
|
||||
`, test)
|
||||
}
|
28
parser/objt_test.go
Normal file
28
parser/objt_test.go
Normal file
@ -0,0 +1,28 @@
|
||||
package parser
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestObjt (test *testing.T) {
|
||||
checkTree ("../tests/parser/objt",
|
||||
`:arf
|
||||
---
|
||||
objt ro Basic:Obj
|
||||
ro that:Basic
|
||||
ro this:Basic
|
||||
objt ro ComplexInit:Obj
|
||||
ro basic:Int 87
|
||||
ro complex0:Bird
|
||||
.that 98
|
||||
.this 2
|
||||
ro complex1:Bird
|
||||
.that 98902
|
||||
.this 235
|
||||
ro whatever:{Int 3}
|
||||
230984
|
||||
849
|
||||
394580
|
||||
objt ro Init:Obj
|
||||
ro that:String "hello world"
|
||||
ro this:Int 23
|
||||
`, test)
|
||||
}
|
@ -1,212 +0,0 @@
|
||||
package parser
|
||||
|
||||
import "io"
|
||||
import "strings"
|
||||
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)
|
||||
treeRunes := []rune(treeString)
|
||||
|
||||
test.Log("CORRECT TREE:")
|
||||
logWithLineNumbers(correct, test)
|
||||
test.Log("WHAT WAS PARSED:")
|
||||
logWithLineNumbers(treeString, test)
|
||||
|
||||
if err != io.EOF && err != nil {
|
||||
test.Log("returned error:")
|
||||
test.Log(err.Error())
|
||||
test.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
equal := true
|
||||
line := 0
|
||||
column := 0
|
||||
|
||||
for index, correctChar := range correct {
|
||||
if index >= len(treeRunes) {
|
||||
test.Log (
|
||||
"parsed is too short at line", line + 1,
|
||||
"col", column + 1)
|
||||
test.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
if correctChar != treeRunes[index] {
|
||||
test.Log (
|
||||
"trees not equal at line", line + 1,
|
||||
"col", column + 1)
|
||||
test.Log("correct: [" + string(correctChar) + "]")
|
||||
test.Log("got: [" + string(treeRunes[index]) + "]")
|
||||
test.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
if correctChar == '\n' {
|
||||
line ++
|
||||
column = 0
|
||||
} else {
|
||||
column ++
|
||||
}
|
||||
}
|
||||
|
||||
if len(treeString) > len(correct) {
|
||||
test.Log("parsed is too long")
|
||||
test.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
if !equal {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func logWithLineNumbers (bigString string, test *testing.T) {
|
||||
lines := strings.Split (
|
||||
strings.Replace(bigString, "\t", " ", -1), "\n")
|
||||
|
||||
for index, line := range lines {
|
||||
test.Logf("%3d | %s", index + 1, line)
|
||||
}
|
||||
}
|
||||
|
||||
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 ro integer:Int 3202
|
||||
data ro integerArray16:{Int 16}
|
||||
data ro integerArrayInitialized:{Int 16}
|
||||
3948
|
||||
293
|
||||
293049
|
||||
948
|
||||
912
|
||||
340
|
||||
0
|
||||
2304
|
||||
0
|
||||
4785
|
||||
92
|
||||
data ro integerArrayVariable:{Int ..}
|
||||
data ro integerPointer:{Int}
|
||||
data ro mutInteger:Int:mut 3202
|
||||
data ro mutIntegerPointer:{Int}:mut
|
||||
data ro nestedObject:Obj
|
||||
.that
|
||||
.bird2 123.8439
|
||||
.bird3 9328.21348239
|
||||
.this
|
||||
.bird0 324
|
||||
.bird1 "hello world"
|
||||
data ro object:Obj
|
||||
.that 2139
|
||||
.this 324
|
||||
`, test)
|
||||
}
|
||||
|
||||
func TestType (test *testing.T) {
|
||||
checkTree ("../tests/parser/type",
|
||||
`:arf
|
||||
---
|
||||
type ro Basic:Int
|
||||
type ro BasicInit:Int 6
|
||||
type ro IntArray:{Int ..}
|
||||
type ro IntArrayInit:{Int 3}
|
||||
3298
|
||||
923
|
||||
92
|
||||
`, test)
|
||||
}
|
||||
|
||||
func TestObjt (test *testing.T) {
|
||||
checkTree ("../tests/parser/objt",
|
||||
`:arf
|
||||
---
|
||||
objt ro Basic:Obj
|
||||
ro that:Basic
|
||||
ro this:Basic
|
||||
objt ro ComplexInit:Obj
|
||||
ro basic:Int 87
|
||||
ro complex0:Bird
|
||||
.that 98
|
||||
.this 2
|
||||
ro complex1:Bird
|
||||
.that 98902
|
||||
.this 235
|
||||
ro whatever:{Int 3}
|
||||
230984
|
||||
849
|
||||
394580
|
||||
objt ro Init:Obj
|
||||
ro that:String "hello world"
|
||||
ro this:Int 23
|
||||
`, test)
|
||||
}
|
||||
|
||||
func TestEnum (test *testing.T) {
|
||||
checkTree ("../tests/parser/enum",
|
||||
`:arf
|
||||
---
|
||||
enum ro AffrontToGod:{Int 4}
|
||||
bird0
|
||||
28394
|
||||
9328
|
||||
398
|
||||
9
|
||||
bird1
|
||||
23
|
||||
932832
|
||||
398
|
||||
2349
|
||||
bird2
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
enum ro NamedColor:U32
|
||||
red 16711680
|
||||
green 65280
|
||||
blue 255
|
||||
enum ro Weekday:Int
|
||||
sunday
|
||||
monday
|
||||
tuesday
|
||||
wednesday
|
||||
thursday
|
||||
friday
|
||||
saturday
|
||||
`, test)
|
||||
}
|
||||
|
||||
func Test (test *testing.T) {
|
||||
checkTree ("../tests/parser/face",
|
||||
`:arf
|
||||
---
|
||||
face ro Destroyer:Face
|
||||
destroy
|
||||
face ro ReadWriter:Face
|
||||
read
|
||||
> into:{Byte ..}
|
||||
< read:Int
|
||||
< err:Error
|
||||
write
|
||||
> data:{Byte ..}
|
||||
< wrote:Int
|
||||
< err:Error
|
||||
`, test)
|
||||
}
|
74
parser/test-common.go
Normal file
74
parser/test-common.go
Normal file
@ -0,0 +1,74 @@
|
||||
package parser
|
||||
|
||||
import "io"
|
||||
import "strings"
|
||||
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)
|
||||
treeRunes := []rune(treeString)
|
||||
|
||||
test.Log("CORRECT TREE:")
|
||||
logWithLineNumbers(correct, test)
|
||||
test.Log("WHAT WAS PARSED:")
|
||||
logWithLineNumbers(treeString, test)
|
||||
|
||||
if err != io.EOF && err != nil {
|
||||
test.Log("returned error:")
|
||||
test.Log(err.Error())
|
||||
test.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
equal := true
|
||||
line := 0
|
||||
column := 0
|
||||
|
||||
for index, correctChar := range correct {
|
||||
if index >= len(treeRunes) {
|
||||
test.Log (
|
||||
"parsed is too short at line", line + 1,
|
||||
"col", column + 1)
|
||||
test.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
if correctChar != treeRunes[index] {
|
||||
test.Log (
|
||||
"trees not equal at line", line + 1,
|
||||
"col", column + 1)
|
||||
test.Log("correct: [" + string(correctChar) + "]")
|
||||
test.Log("got: [" + string(treeRunes[index]) + "]")
|
||||
test.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
if correctChar == '\n' {
|
||||
line ++
|
||||
column = 0
|
||||
} else {
|
||||
column ++
|
||||
}
|
||||
}
|
||||
|
||||
if len(treeString) > len(correct) {
|
||||
test.Log("parsed is too long")
|
||||
test.Fail()
|
||||
return
|
||||
}
|
||||
|
||||
if !equal {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func logWithLineNumbers (bigString string, test *testing.T) {
|
||||
lines := strings.Split (
|
||||
strings.Replace(bigString, "\t", " ", -1), "\n")
|
||||
|
||||
for index, line := range lines {
|
||||
test.Logf("%3d | %s", index + 1, line)
|
||||
}
|
||||
}
|
17
parser/type_test.go
Normal file
17
parser/type_test.go
Normal file
@ -0,0 +1,17 @@
|
||||
package parser
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestType (test *testing.T) {
|
||||
checkTree ("../tests/parser/type",
|
||||
`:arf
|
||||
---
|
||||
type ro Basic:Int
|
||||
type ro BasicInit:Int 6
|
||||
type ro IntArray:{Int ..}
|
||||
type ro IntArrayInit:{Int 3}
|
||||
3298
|
||||
923
|
||||
92
|
||||
`, test)
|
||||
}
|
Reference in New Issue
Block a user