treerack/boot_test.go

94 lines
1.1 KiB
Go
Raw Normal View History

2017-07-15 21:49:08 +02:00
package treerack
2017-06-25 17:51:08 +02:00
import (
"os"
"testing"
2017-07-17 04:23:29 +02:00
"time"
2017-06-25 17:51:08 +02:00
)
func TestBoot(t *testing.T) {
2017-06-26 01:21:46 +02:00
b, err := initBoot(bootSyntaxDefs)
2017-06-25 17:51:08 +02:00
if err != nil {
t.Error(err)
return
}
2017-07-29 18:40:22 +02:00
f, err := os.Open("syntax.parser")
2017-06-25 17:51:08 +02:00
if err != nil {
t.Error(err)
return
}
defer f.Close()
2017-07-26 20:03:46 +02:00
var d time.Duration
const n = 120
2017-07-29 18:40:22 +02:00
var n0 *Node
2017-07-26 20:03:46 +02:00
for i := 0; i < n; i++ {
if _, err := f.Seek(0, 0); err != nil {
t.Error(err)
return
}
start := time.Now()
2017-07-29 18:40:22 +02:00
n0, err = b.Parse(f)
2017-07-26 20:03:46 +02:00
d += time.Now().Sub(start)
2017-07-29 18:40:22 +02:00
if err != nil {
2017-07-26 20:03:46 +02:00
t.Error(err)
return
}
2017-06-25 17:51:08 +02:00
}
2017-07-26 20:03:46 +02:00
t.Log("duration:", d/n)
2017-07-29 18:40:22 +02:00
s0 := NewSyntax()
if err := define(s0, n0); err != nil {
t.Error(err)
return
}
_, err = f.Seek(0, 0)
if err != nil {
t.Error(err)
return
}
err = s0.Init()
if 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() {
return
}
s1 := NewSyntax()
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)
2017-06-25 17:51:08 +02:00
}