1
0
treerack/boot_test.go
2026-06-07 17:56:24 +02:00

69 lines
1019 B
Go

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))
}