aboutsummaryrefslogtreecommitdiff
path: root/node_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'node_test.go')
-rw-r--r--node_test.go83
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")
+ }
}