refactor boot test

This commit is contained in:
Arpad Ryszka 2017-10-27 16:39:13 +02:00
parent d2faeab35e
commit 0e236fb688
2 changed files with 47 additions and 44 deletions

View File

@ -196,6 +196,10 @@ func initBoot(definitions [][]string) (*Syntax, error) {
return s, s.Init() return s, s.Init()
} }
func createBoot() (*Syntax, error) {
return initBoot(bootSyntaxDefs)
}
func bootSyntax() (*Syntax, error) { func bootSyntax() (*Syntax, error) {
b, err := initBoot(bootSyntaxDefs) b, err := initBoot(bootSyntaxDefs)
if err != nil { if err != nil {

View File

@ -1,12 +1,51 @@
package treerack package treerack
import ( import (
"io"
"os" "os"
"testing" "testing"
) )
func parseWithSyntax(s *Syntax, f io.ReadSeeker) (*Node, error) {
if _, err := f.Seek(0, 0); err != nil {
return nil, err
}
return s.Parse(f)
}
func syntaxFromTree(n *Node) (*Syntax, error) {
s := NewSyntax()
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.ReadSeeker) *Node {
s, err := syntaxFromTree(n)
if err != nil {
t.Error(err)
return nil
}
nn, err := parseWithSyntax(s, f)
if err != nil {
t.Error(err)
return nil
}
checkNode(t, nn, n)
return nn
}
func TestBoot(t *testing.T) { func TestBoot(t *testing.T) {
b, err := initBoot(bootSyntaxDefs) b, err := createBoot()
if err != nil { if err != nil {
t.Error(err) t.Error(err)
return return
@ -20,56 +59,16 @@ func TestBoot(t *testing.T) {
defer f.Close() defer f.Close()
n0, err := b.Parse(f) n0, err := parseWithSyntax(b, f)
if err != nil { if err != nil {
t.Error(err) t.Error(err)
return return
} }
s0 := NewSyntax() n1 := testParseFromTree(t, n0, f)
if err := define(s0, n0); err != nil {
t.Error(err)
return
}
if err := s0.Init(); err != nil {
t.Error(err)
return
}
if _, err := f.Seek(0, 0); err != nil {
t.Error(err)
return
}
n1, err := s0.Parse(f)
if err != nil {
t.Error(err)
return
}
checkNode(t, n1, n0)
if t.Failed() { if t.Failed() {
return return
} }
s1 := NewSyntax() testParseFromTree(t, n1, f)
if err := define(s1, n1); err != nil {
t.Error(err)
return
}
_, err = f.Seek(0, 0)
if err != nil {
t.Error(err)
return
}
n2, err := s1.Parse(f)
if err != nil {
t.Error(err)
return
}
checkNode(t, n2, n1)
} }