Parser tests now show exact line and column where data is mismatched
This commit is contained in:
parent
e069569c3c
commit
6a5851c9eb
@ -5,8 +5,9 @@ import "testing"
|
|||||||
// import "git.tebibyte.media/sashakoshka/arf/types"
|
// import "git.tebibyte.media/sashakoshka/arf/types"
|
||||||
|
|
||||||
func checkTree (modulePath string, correct string, test *testing.T) {
|
func checkTree (modulePath string, correct string, test *testing.T) {
|
||||||
tree, err := Parse(modulePath)
|
tree, err := Parse(modulePath)
|
||||||
treeString := tree.ToString(0)
|
treeString := tree.ToString(0)
|
||||||
|
treeRunes := []rune(treeString)
|
||||||
|
|
||||||
test.Log("CORRECT TREE:")
|
test.Log("CORRECT TREE:")
|
||||||
test.Log(correct)
|
test.Log(correct)
|
||||||
@ -20,11 +21,46 @@ func checkTree (modulePath string, correct string, test *testing.T) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if treeString != correct {
|
equal := true
|
||||||
test.Log("trees not equal!")
|
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()
|
test.Fail()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !equal {
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestMeta (test *testing.T) {
|
func TestMeta (test *testing.T) {
|
||||||
|
Reference in New Issue
Block a user