2017-07-15 21:49:08 +02:00
|
|
|
package treerack
|
2017-06-25 17:51:08 +02:00
|
|
|
|
|
|
|
import (
|
2017-10-27 16:39:13 +02:00
|
|
|
"io"
|
2017-06-25 17:51:08 +02:00
|
|
|
"os"
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
2017-10-27 16:39:13 +02:00
|
|
|
func parseWithSyntax(s *Syntax, f io.ReadSeeker) (*Node, error) {
|
|
|
|
if _, err := f.Seek(0, 0); err != nil {
|
|
|
|
return nil, err
|
2017-06-25 17:51:08 +02:00
|
|
|
}
|
|
|
|
|
2017-10-27 16:39:13 +02:00
|
|
|
return s.Parse(f)
|
|
|
|
}
|
|
|
|
|
|
|
|
func syntaxFromTree(n *Node) (*Syntax, error) {
|
2017-10-31 21:53:09 +01:00
|
|
|
s := &Syntax{}
|
2017-10-27 16:39:13 +02:00
|
|
|
if err := define(s, n); err != nil {
|
|
|
|
return nil, err
|
2017-06-25 17:51:08 +02:00
|
|
|
}
|
|
|
|
|
2017-10-27 16:39:13 +02:00
|
|
|
if err := s.Init(); err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
return s, nil
|
|
|
|
}
|
2017-06-25 17:51:08 +02:00
|
|
|
|
2017-10-27 16:39:13 +02:00
|
|
|
func testParseFromTree(t *testing.T, n *Node, f io.ReadSeeker) *Node {
|
|
|
|
s, err := syntaxFromTree(n)
|
2017-10-27 16:23:17 +02:00
|
|
|
if err != nil {
|
2017-07-29 18:40:22 +02:00
|
|
|
t.Error(err)
|
2017-10-27 16:39:13 +02:00
|
|
|
return nil
|
2017-07-29 18:40:22 +02:00
|
|
|
}
|
|
|
|
|
2017-10-27 16:39:13 +02:00
|
|
|
nn, err := parseWithSyntax(s, f)
|
|
|
|
if err != nil {
|
2017-07-29 18:40:22 +02:00
|
|
|
t.Error(err)
|
2017-10-27 16:39:13 +02:00
|
|
|
return nil
|
2017-07-29 18:40:22 +02:00
|
|
|
}
|
|
|
|
|
2017-10-27 17:25:20 +02:00
|
|
|
checkNode(t, false, nn, n)
|
2017-10-27 16:39:13 +02:00
|
|
|
return nn
|
|
|
|
}
|
2017-08-06 21:47:53 +02:00
|
|
|
|
2017-10-27 16:39:13 +02:00
|
|
|
func TestBoot(t *testing.T) {
|
|
|
|
b, err := createBoot()
|
2017-10-27 16:23:17 +02:00
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
return
|
|
|
|
}
|
2017-08-06 21:47:53 +02:00
|
|
|
|
2017-10-31 21:53:09 +01:00
|
|
|
f, err := os.Open("syntax.treerack")
|
2017-10-27 16:39:13 +02:00
|
|
|
if err != nil {
|
2017-10-27 16:23:17 +02:00
|
|
|
t.Error(err)
|
|
|
|
return
|
|
|
|
}
|
2017-08-06 21:47:53 +02:00
|
|
|
|
2017-10-27 16:39:13 +02:00
|
|
|
defer f.Close()
|
|
|
|
|
|
|
|
n0, err := parseWithSyntax(b, f)
|
2017-10-27 16:23:17 +02:00
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
return
|
|
|
|
}
|
2017-08-06 21:47:53 +02:00
|
|
|
|
2017-10-27 16:39:13 +02:00
|
|
|
n1 := testParseFromTree(t, n0, f)
|
|
|
|
if t.Failed() {
|
2017-10-27 16:23:17 +02:00
|
|
|
return
|
|
|
|
}
|
2017-08-06 21:47:53 +02:00
|
|
|
|
2017-10-27 16:39:13 +02:00
|
|
|
testParseFromTree(t, n1, f)
|
2017-06-25 17:51:08 +02:00
|
|
|
}
|