package generator import "io" import "testing" import "strings" import "git.tebibyte.media/sashakoshka/fspl/lexer" import "git.tebibyte.media/sashakoshka/fspl/analyzer" import "git.tebibyte.media/sashakoshka/fspl/testcommon" import "git.tebibyte.media/sashakoshka/fspl/parser/fspl" func testString (test *testing.T, correct string, input string) { ast := fsplParser.Tree { } lx, err := lexer.LexReader("input.fspl", strings.NewReader(input)) if err != nil { test.Error("lexer returned error:", err) return } err = ast.Parse(fsplParser.UnitInfo { }, lx) 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() } }