tree - mem_test.go
1 package tree
2
3 import (
4 "bytes"
5 "errors"
6 "reflect"
7 "testing"
8 )
9
10 func TestOpenMem(t *testing.T) {
11 for n, test := range openTests {
12 var buf bytes.Buffer
13
14 Serialise(&buf, &test)
15
16 node, err := OpenMem(buf.Bytes())
17 if err != nil {
18 t.Fatalf("test %d: expected error: %s", n+1, err)
19 }
20
21 tree := readTree(node)
22
23 if !reflect.DeepEqual(test, tree) {
24 t.Errorf("test %d: no match", n+1)
25 }
26 }
27 }
28
29 func TestMemChild(t *testing.T) {
30 var buf bytes.Buffer
31
32 Serialise(&buf, testChild)
33
34 Loop:
35 for n, test := range childTests {
36 node, err := OpenMem(buf.Bytes())
37 if err != nil {
38 t.Fatalf("test %d: expected error: %s", n+1, err)
39 }
40
41 for m := range test.key {
42 child, err := node.Child(test.key[m])
43 if !errors.Is(err, test.errors[m]) {
44 t.Errorf("test %d.%d: expecting error %v, got %v", n+1, m+1, test.errors[m], err)
45 }
46
47 if err != nil {
48 continue Loop
49 }
50
51 node = child
52 }
53
54 var data bytes.Buffer
55
56 node.WriteTo(&data)
57
58 if !bytes.Equal(data.Bytes(), test.data) {
59 t.Errorf("test %d: expecting data %q, got %q", n+1, test.data, data.Bytes())
60 } else if numChildren := node.NumChildren(); numChildren != test.numChildren {
61 t.Errorf("test %d: expecting %d children, got %d", n+1, test.numChildren, numChildren)
62 } else if dataLen := node.DataLen(); dataLen != test.dataLen {
63 t.Errorf("test %d: expecting %d bytes of data, got %d", n+1, test.dataLen, dataLen)
64 }
65 }
66 }
67