fspl/parser/test-common.go

32 lines
752 B
Go
Raw Normal View History

2023-09-18 05:55:38 +00:00
package parser
import "io"
import "testing"
import "strings"
2024-02-06 23:58:09 +00:00
import "git.tebibyte.media/sashakoshka/fspl/errors"
import "git.tebibyte.media/sashakoshka/fspl/testcommon"
2023-09-18 05:55:38 +00:00
func testString (test *testing.T, correct string, input string) {
ast := Tree { }
err := ast.Parse("input.fspl", strings.NewReader(input))
if err != nil && err != io.EOF{
2024-02-06 23:58:09 +00:00
if err, ok := err.(*errors.Error); ok {
test.Log("parser returned error:")
test.Log(err.Format())
test.Fail()
} else {
test.Error("parser returned error:", err)
}
return
2023-09-18 05:55:38 +00:00
}
got := ast.String()
2023-09-18 05:55:38 +00:00
if got != correct {
test.Logf("results do not match")
testcommon.Compare(test, correct, got)
test.Log("SOURCE FSPL CODE:")
test.Log("\033[32m" + input + "\033[0m")
2023-09-18 05:55:38 +00:00
test.Fail()
}
}