diff options
Diffstat (limited to 'node_test.go')
-rw-r--r-- | node_test.go | 83 |
1 files changed, 55 insertions, 28 deletions
diff --git a/node_test.go b/node_test.go index b85e18f..f4bf4af 100644 --- a/node_test.go +++ b/node_test.go @@ -3,8 +3,6 @@ package bolt import ( "testing" "unsafe" - - "github.com/stretchr/testify/assert" ) // Ensure that a node can insert a key/value. @@ -14,14 +12,22 @@ func TestNode_put(t *testing.T) { n.put([]byte("foo"), []byte("foo"), []byte("0"), 0, 0) n.put([]byte("bar"), []byte("bar"), []byte("1"), 0, 0) n.put([]byte("foo"), []byte("foo"), []byte("3"), 0, leafPageFlag) - assert.Equal(t, len(n.inodes), 3) - assert.Equal(t, n.inodes[0].key, []byte("bar")) - assert.Equal(t, n.inodes[0].value, []byte("1")) - assert.Equal(t, n.inodes[1].key, []byte("baz")) - assert.Equal(t, n.inodes[1].value, []byte("2")) - assert.Equal(t, n.inodes[2].key, []byte("foo")) - assert.Equal(t, n.inodes[2].value, []byte("3")) - assert.Equal(t, n.inodes[2].flags, uint32(leafPageFlag)) + + if len(n.inodes) != 3 { + t.Fatalf("exp=3; got=%d", len(n.inodes)) + } + if k, v := n.inodes[0].key, n.inodes[0].value; string(k) != "bar" || string(v) != "1" { + t.Fatalf("exp=<bar,1>; got=<%s,%s>", k, v) + } + if k, v := n.inodes[1].key, n.inodes[1].value; string(k) != "baz" || string(v) != "2" { + t.Fatalf("exp=<baz,2>; got=<%s,%s>", k, v) + } + if k, v := n.inodes[2].key, n.inodes[2].value; string(k) != "foo" || string(v) != "3" { + t.Fatalf("exp=<foo,3>; got=<%s,%s>", k, v) + } + if n.inodes[2].flags != uint32(leafPageFlag) { + t.Fatalf("not a leaf: %d", n.inodes[2].flags) + } } // Ensure that a node can deserialize from a leaf page. @@ -47,12 +53,18 @@ func TestNode_read_LeafPage(t *testing.T) { n.read(page) // Check that there are two inodes with correct data. - assert.True(t, n.isLeaf) - assert.Equal(t, len(n.inodes), 2) - assert.Equal(t, n.inodes[0].key, []byte("bar")) - assert.Equal(t, n.inodes[0].value, []byte("fooz")) - assert.Equal(t, n.inodes[1].key, []byte("helloworld")) - assert.Equal(t, n.inodes[1].value, []byte("bye")) + if !n.isLeaf { + t.Fatalf("expected leaf", n.isLeaf) + } + if len(n.inodes) != 2 { + t.Fatalf("exp=2; got=%d", len(n.inodes)) + } + if k, v := n.inodes[0].key, n.inodes[0].value; string(k) != "bar" || string(v) != "fooz" { + t.Fatalf("exp=<bar,fooz>; got=<%s,%s>", k, v) + } + if k, v := n.inodes[1].key, n.inodes[1].value; string(k) != "helloworld" || string(v) != "bye" { + t.Fatalf("exp=<helloworld,bye>; got=<%s,%s>", k, v) + } } // Ensure that a node can serialize into a leaf page. @@ -73,13 +85,18 @@ func TestNode_write_LeafPage(t *testing.T) { n2.read(p) // Check that the two pages are the same. - assert.Equal(t, len(n2.inodes), 3) - assert.Equal(t, n2.inodes[0].key, []byte("john")) - assert.Equal(t, n2.inodes[0].value, []byte("johnson")) - assert.Equal(t, n2.inodes[1].key, []byte("ricki")) - assert.Equal(t, n2.inodes[1].value, []byte("lake")) - assert.Equal(t, n2.inodes[2].key, []byte("susy")) - assert.Equal(t, n2.inodes[2].value, []byte("que")) + if len(n2.inodes) != 3 { + t.Fatalf("exp=3; got=%d", len(n2.inodes)) + } + if k, v := n2.inodes[0].key, n2.inodes[0].value; string(k) != "john" || string(v) != "johnson" { + t.Fatalf("exp=<john,johnson>; got=<%s,%s>", k, v) + } + if k, v := n2.inodes[1].key, n2.inodes[1].value; string(k) != "ricki" || string(v) != "lake" { + t.Fatalf("exp=<ricki,lake>; got=<%s,%s>", k, v) + } + if k, v := n2.inodes[2].key, n2.inodes[2].value; string(k) != "susy" || string(v) != "que" { + t.Fatalf("exp=<susy,que>; got=<%s,%s>", k, v) + } } // Ensure that a node can split into appropriate subgroups. @@ -96,9 +113,15 @@ func TestNode_split(t *testing.T) { n.split(100) var parent = n.parent - assert.Equal(t, len(parent.children), 2) - assert.Equal(t, len(parent.children[0].inodes), 2) - assert.Equal(t, len(parent.children[1].inodes), 3) + if len(parent.children) != 2 { + t.Fatalf("exp=2; got=%d", len(parent.children)) + } + if len(parent.children[0].inodes) != 2 { + t.Fatalf("exp=2; got=%d", len(parent.children[0].inodes)) + } + if len(parent.children[1].inodes) != 3 { + t.Fatalf("exp=3; got=%d", len(parent.children[1].inodes)) + } } // Ensure that a page with the minimum number of inodes just returns a single node. @@ -110,7 +133,9 @@ func TestNode_split_MinKeys(t *testing.T) { // Split. n.split(20) - assert.Nil(t, n.parent) + if n.parent != nil { + t.Fatalf("expected nil parent") + } } // Ensure that a node that has keys that all fit on a page just returns one leaf. @@ -125,5 +150,7 @@ func TestNode_split_SinglePage(t *testing.T) { // Split. n.split(4096) - assert.Nil(t, n.parent) + if n.parent != nil { + t.Fatalf("expected nil parent") + } } |