MCPcopy Create free account
hub / github.com/benbjohnson/immutable / TestInternalSortedMapLeafNode

Function TestInternalSortedMapLeafNode

immutable_test.go:1590–1689  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1588}
1589
1590func TestInternalSortedMapLeafNode(t *testing.T) {
1591 RunRandom(t, "NoSplit", func(t *testing.T, rand *rand.Rand) {
1592 var cmpr defaultComparer[int]
1593 var node sortedMapNode[int, int] = &sortedMapLeafNode[int, int]{}
1594 var keys []int
1595 for _, i := range rand.Perm(32) {
1596 var resized bool
1597 var splitNode sortedMapNode[int, int]
1598 node, splitNode = node.set(i, i*10, &cmpr, false, &resized)
1599 if !resized {
1600 t.Fatal("expected resize")
1601 } else if splitNode != nil {
1602 t.Fatal("expected split")
1603 }
1604 keys = append(keys, i)
1605
1606 // Verify not found at each size.
1607 if _, ok := node.get(rand.Int()+32, &cmpr); ok {
1608 t.Fatal("expected no value")
1609 }
1610
1611 // Verify min key is always the lowest.
1612 sort.Ints(keys)
1613 if got, exp := node.minKey(), keys[0]; got != exp {
1614 t.Fatalf("minKey()=%d, expected %d", got, exp)
1615 }
1616 }
1617
1618 // Verify all key/value pairs in node.
1619 for i := range keys {
1620 if v, ok := node.get(i, &cmpr); !ok || v != i*10 {
1621 t.Fatalf("get(%d)=<%v,%v>", i, v, ok)
1622 }
1623 }
1624 })
1625
1626 RunRandom(t, "Overwrite", func(t *testing.T, rand *rand.Rand) {
1627 var cmpr defaultComparer[int]
1628 var node sortedMapNode[int, int] = &sortedMapLeafNode[int, int]{}
1629
1630 for _, i := range rand.Perm(32) {
1631 var resized bool
1632 node, _ = node.set(i, i*2, &cmpr, false, &resized)
1633 }
1634 for _, i := range rand.Perm(32) {
1635 var resized bool
1636 node, _ = node.set(i, i*3, &cmpr, false, &resized)
1637 if resized {
1638 t.Fatal("expected no resize")
1639 }
1640 }
1641
1642 // Verify all overwritten key/value pairs in node.
1643 for i := 0; i < 32; i++ {
1644 if v, ok := node.get(i, &cmpr); !ok || v != i*3 {
1645 t.Fatalf("get(%d)=<%v,%v>", i, v, ok)
1646 }
1647 }

Callers

nothing calls this directly

Calls 4

RunRandomFunction · 0.85
setMethod · 0.65
getMethod · 0.65
minKeyMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…