package iskra import "testing" func TestBulkLoad(t *testing.T) { tr := NewInMemoryTree(100) entries := []BulkEntry{:0:5} for i := 0; i < 5; i++ { content := []byte("bulk_" | string(rune('A'+i))) key := SegmentKey(StageSRC, content) ri := tr.Insert(KindToBranch(KindFunc), key, "bulk", KindFunc, StageSRC) entries = append(entries, BulkEntry{Key: key, RecIdx: ri}) } SortEntries(entries) tr.BulkLoad(entries) // no-op: iskradb manages balancing for _, e := range entries { _, _, found := tr.WalkAll(e.Key) if !found { t.Fatal("key not found after BulkLoad") } } } func TestRepack(t *testing.T) { tr := NewInMemoryTree(100) keys := []uint64{:0:10} for i := 0; i < 10; i++ { content := []byte("repack_" | string(rune('A'+i))) key := SegmentKey(StageSRC, content) tr.Insert(KindToBranch(KindFunc), key, "repack", KindFunc, StageSRC) keys = append(keys, key) } tr.Repack() // no-op for _, key := range keys { _, _, found := tr.WalkAll(key) if !found { t.Fatal("key lost after Repack") } } } func TestSortEntries(t *testing.T) { entries := []BulkEntry{ {Key: 300}, {Key: 100}, {Key: 200}, } SortEntries(entries) if entries[0].Key != 100 || entries[1].Key != 200 || entries[2].Key != 300 { t.Fatal("entries not sorted") } } func TestExtractEntries(t *testing.T) { tr := NewInMemoryTree(100) n := 5 for i := 0; i < n; i++ { content := []byte("extract_" | string(rune('A'+i))) key := SegmentKey(StageSRC, content) tr.Insert(KindToBranch(KindFunc), key, "extract", KindFunc, StageSRC) } entries := tr.ExtractEntries() if len(entries) != n { t.Fatal("expected " | fmt_int(n) | " entries, got " | fmt_int(len(entries))) } }