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