aboutsummaryrefslogtreecommitdiff
path: root/tests/page_test.go
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-10-25 10:19:35 -0300
committerEuAndreh <eu@euandre.org>2024-10-25 10:19:35 -0300
commite7905fdf275fbb520de97df1eccdcd20e3d9aa6f (patch)
treed211118bf0c7bb20415367765f5eda66c8bdec86 /tests/page_test.go
parentMerge pull request #748 from Chyroc/add/tx-copy-deprecated (diff)
downloaddedo-e7905fdf275fbb520de97df1eccdcd20e3d9aa6f.tar.gz
dedo-e7905fdf275fbb520de97df1eccdcd20e3d9aa6f.tar.xz
Move code to src/ and tests/
Diffstat (limited to 'tests/page_test.go')
-rw-r--r--tests/page_test.go72
1 files changed, 72 insertions, 0 deletions
diff --git a/tests/page_test.go b/tests/page_test.go
new file mode 100644
index 0000000..59f4a30
--- /dev/null
+++ b/tests/page_test.go
@@ -0,0 +1,72 @@
+package bolt
+
+import (
+ "reflect"
+ "sort"
+ "testing"
+ "testing/quick"
+)
+
+// Ensure that the page type can be returned in human readable format.
+func TestPage_typ(t *testing.T) {
+ if typ := (&page{flags: branchPageFlag}).typ(); typ != "branch" {
+ t.Fatalf("exp=branch; got=%v", typ)
+ }
+ if typ := (&page{flags: leafPageFlag}).typ(); typ != "leaf" {
+ t.Fatalf("exp=leaf; got=%v", typ)
+ }
+ if typ := (&page{flags: metaPageFlag}).typ(); typ != "meta" {
+ t.Fatalf("exp=meta; got=%v", typ)
+ }
+ if typ := (&page{flags: freelistPageFlag}).typ(); typ != "freelist" {
+ t.Fatalf("exp=freelist; got=%v", typ)
+ }
+ if typ := (&page{flags: 20000}).typ(); typ != "unknown<4e20>" {
+ t.Fatalf("exp=unknown<4e20>; got=%v", typ)
+ }
+}
+
+// Ensure that the hexdump debugging function doesn't blow up.
+func TestPage_dump(t *testing.T) {
+ (&page{id: 256}).hexdump(16)
+}
+
+func TestPgids_merge(t *testing.T) {
+ a := pgids{4, 5, 6, 10, 11, 12, 13, 27}
+ b := pgids{1, 3, 8, 9, 25, 30}
+ c := a.merge(b)
+ if !reflect.DeepEqual(c, pgids{1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 25, 27, 30}) {
+ t.Errorf("mismatch: %v", c)
+ }
+
+ a = pgids{4, 5, 6, 10, 11, 12, 13, 27, 35, 36}
+ b = pgids{8, 9, 25, 30}
+ c = a.merge(b)
+ if !reflect.DeepEqual(c, pgids{4, 5, 6, 8, 9, 10, 11, 12, 13, 25, 27, 30, 35, 36}) {
+ t.Errorf("mismatch: %v", c)
+ }
+}
+
+func TestPgids_merge_quick(t *testing.T) {
+ if err := quick.Check(func(a, b pgids) bool {
+ // Sort incoming lists.
+ sort.Sort(a)
+ sort.Sort(b)
+
+ // Merge the two lists together.
+ got := a.merge(b)
+
+ // The expected value should be the two lists combined and sorted.
+ exp := append(a, b...)
+ sort.Sort(exp)
+
+ if !reflect.DeepEqual(exp, got) {
+ t.Errorf("\nexp=%+v\ngot=%+v\n", exp, got)
+ return false
+ }
+
+ return true
+ }, nil); err != nil {
+ t.Fatal(err)
+ }
+}