package treerack import ( "bytes" "io" "os" "testing" ) func parseWithSyntax(s *Syntax, f io.Reader) (Node, error) { return s.Parse(f) } func syntaxFromTree(n Node) (*Syntax, error) { s := &Syntax{} if err := define(s, n); err != nil { return nil, err } if err := s.Init(); err != nil { return nil, err } return s, nil } func testParseFromTree(t *testing.T, n Node, f io.Reader) Node { s, err := syntaxFromTree(n) if err != nil { t.Error(err) return Node{} } nn, err := parseWithSyntax(s, f) if err != nil { t.Error(err) return Node{} } checkNode(t, false, nn, n) return nn } func TestBoot(t *testing.T) { b, err := bootSyntax() if err != nil { t.Error(err) return } p, err := os.ReadFile("syntax.treerack") if err != nil { t.Fatal(err) } n0, err := parseWithSyntax(b, bytes.NewBuffer(p)) if err != nil { t.Error(err) return } n1 := testParseFromTree(t, n0, bytes.NewBuffer(p)) if t.Failed() { return } testParseFromTree(t, n1, bytes.NewBuffer(p)) }