package generator import "io" import "testing" import "strings" import "git.tebibyte.media/sashakoshka/fspl/parser" import "git.tebibyte.media/sashakoshka/fspl/analyzer" import "git.tebibyte.media/sashakoshka/fspl/testcommon" func testString (test *testing.T, correct string, input string) { ast := parser.Tree { } err := ast.Parse("input.fspl", strings.NewReader(input)) if err != nil && err != io.EOF{ test.Error("parser returned error:", err) return } tree := analyzer.Tree { } err = tree.Analyze(ast) if err != nil { test.Error("analyzer returned error:", err) return } module, err := (&Target { WordSize: 64, Arch: "x86_64", }).Generate(tree) if err != nil { test.Error("generator returned error:", err) return } output := new(strings.Builder) _, err = module.WriteTo(output) if err != nil { test.Error("generator returned error:", err) return } got := output.String() 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") test.Fail() } }