canonical_test.mx raw
1 package iskra
2
3 import "testing"
4
5 func TestBulkLoad(t *testing.T) {
6 tr := NewInMemoryTree(100)
7 entries := []BulkEntry{:0:5}
8 for i := 0; i < 5; i++ {
9 content := []byte("bulk_" | string(rune('A'+i)))
10 key := SegmentKey(StageSRC, content)
11 ri := tr.Insert(KindToBranch(KindFunc), key, "bulk", KindFunc, StageSRC)
12 entries = append(entries, BulkEntry{Key: key, RecIdx: ri})
13 }
14 SortEntries(entries)
15 tr.BulkLoad(entries) // no-op: iskradb manages balancing
16
17 for _, e := range entries {
18 _, _, found := tr.WalkAll(e.Key)
19 if !found {
20 t.Fatal("key not found after BulkLoad")
21 }
22 }
23 }
24
25 func TestRepack(t *testing.T) {
26 tr := NewInMemoryTree(100)
27 keys := []uint64{:0:10}
28 for i := 0; i < 10; i++ {
29 content := []byte("repack_" | string(rune('A'+i)))
30 key := SegmentKey(StageSRC, content)
31 tr.Insert(KindToBranch(KindFunc), key, "repack", KindFunc, StageSRC)
32 keys = append(keys, key)
33 }
34 tr.Repack() // no-op
35 for _, key := range keys {
36 _, _, found := tr.WalkAll(key)
37 if !found {
38 t.Fatal("key lost after Repack")
39 }
40 }
41 }
42
43 func TestSortEntries(t *testing.T) {
44 entries := []BulkEntry{
45 {Key: 300},
46 {Key: 100},
47 {Key: 200},
48 }
49 SortEntries(entries)
50 if entries[0].Key != 100 || entries[1].Key != 200 || entries[2].Key != 300 {
51 t.Fatal("entries not sorted")
52 }
53 }
54
55 func TestExtractEntries(t *testing.T) {
56 tr := NewInMemoryTree(100)
57 n := 5
58 for i := 0; i < n; i++ {
59 content := []byte("extract_" | string(rune('A'+i)))
60 key := SegmentKey(StageSRC, content)
61 tr.Insert(KindToBranch(KindFunc), key, "extract", KindFunc, StageSRC)
62 }
63 entries := tr.ExtractEntries()
64 if len(entries) != n {
65 t.Fatal("expected " | fmt_int(n) | " entries, got " | fmt_int(len(entries)))
66 }
67 }
68