1
2
3
4
5 package build
6
7 import (
8 "bytes"
9 "fmt"
10 "testing"
11 )
12
13
14
15 var testRunes = []rune{
16 0x01, 0x0C, 0x7F,
17 0x80, 0x100, 0x7FF,
18 0x800, 0x999, 0xFFFF,
19 0x10000, 0x10101, 0x10FFFF,
20 0x200, 0x201, 0x202, 0x210, 0x215,
21 }
22
23 func makeTestTrie(t *testing.T) trie {
24 n := newNode()
25 for i, r := range testRunes {
26 n.insert(r, uint32(i))
27 }
28 idx := newTrieBuilder()
29 idx.addTrie(n)
30 tr, err := idx.generate()
31 if err != nil {
32 t.Errorf(err.Error())
33 }
34 return *tr
35 }
36
37 func TestGenerateTrie(t *testing.T) {
38 testdata := makeTestTrie(t)
39 buf := &bytes.Buffer{}
40 testdata.printArrays(buf, "test")
41 fmt.Fprintf(buf, "var testTrie = ")
42 testdata.printStruct(buf, &trieHandle{19, 0}, "test")
43 if output != buf.String() {
44 t.Error("output differs")
45 }
46 }
47
48 var output = `// testValues: 832 entries, 3328 bytes
49 // Block 2 is the null block.
50 var testValues = [832]uint32 {
51 // Block 0x0, offset 0x0
52 0x000c:0x00000001,
53 // Block 0x1, offset 0x40
54 0x007f:0x00000002,
55 // Block 0x2, offset 0x80
56 // Block 0x3, offset 0xc0
57 0x00c0:0x00000003,
58 // Block 0x4, offset 0x100
59 0x0100:0x00000004,
60 // Block 0x5, offset 0x140
61 0x0140:0x0000000c, 0x0141:0x0000000d, 0x0142:0x0000000e,
62 0x0150:0x0000000f,
63 0x0155:0x00000010,
64 // Block 0x6, offset 0x180
65 0x01bf:0x00000005,
66 // Block 0x7, offset 0x1c0
67 0x01c0:0x00000006,
68 // Block 0x8, offset 0x200
69 0x0219:0x00000007,
70 // Block 0x9, offset 0x240
71 0x027f:0x00000008,
72 // Block 0xa, offset 0x280
73 0x0280:0x00000009,
74 // Block 0xb, offset 0x2c0
75 0x02c1:0x0000000a,
76 // Block 0xc, offset 0x300
77 0x033f:0x0000000b,
78 }
79
80 // testLookup: 640 entries, 1280 bytes
81 // Block 0 is the null block.
82 var testLookup = [640]uint16 {
83 // Block 0x0, offset 0x0
84 // Block 0x1, offset 0x40
85 // Block 0x2, offset 0x80
86 // Block 0x3, offset 0xc0
87 0x0e0:0x05, 0x0e6:0x06,
88 // Block 0x4, offset 0x100
89 0x13f:0x07,
90 // Block 0x5, offset 0x140
91 0x140:0x08, 0x144:0x09,
92 // Block 0x6, offset 0x180
93 0x190:0x03,
94 // Block 0x7, offset 0x1c0
95 0x1ff:0x0a,
96 // Block 0x8, offset 0x200
97 0x20f:0x05,
98 // Block 0x9, offset 0x240
99 0x242:0x01, 0x244:0x02,
100 0x248:0x03,
101 0x25f:0x04,
102 0x260:0x01,
103 0x26f:0x02,
104 0x270:0x04, 0x274:0x06,
105 }
106
107 var testTrie = trie{ testLookup[1216:], testValues[0:], testLookup[:], testValues[:]}`
108
View as plain text