MCPcopy
hub / github.com/etcd-io/bbolt / TestBucket_ForEachBucket

Function TestBucket_ForEachBucket

bucket_test.go:1028–1070  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1026}
1027
1028func TestBucket_ForEachBucket(t *testing.T) {
1029 db := btesting.MustCreateDB(t)
1030
1031 expectedItems := [][]byte{
1032 []byte("csubbucket"),
1033 []byte("zsubbucket"),
1034 }
1035
1036 verifyReads := func(b *bolt.Bucket) {
1037 var items [][]byte
1038 err := b.ForEachBucket(func(k []byte) error {
1039 items = append(items, k)
1040 return nil
1041 })
1042 assert.NoErrorf(t, err, "b.ForEach failed")
1043 assert.Equal(t, expectedItems, items, "what we iterated (ForEach) is not what we put")
1044 }
1045
1046 err := db.Update(func(tx *bolt.Tx) error {
1047 b, err := tx.CreateBucket([]byte("widgets"))
1048 require.NoError(t, err, "bucket creation failed")
1049
1050 require.NoErrorf(t, b.Put([]byte("foo"), []byte("0000")), "put 'foo' failed")
1051 _, err = b.CreateBucket([]byte("zsubbucket"))
1052 require.NoErrorf(t, err, "creation of subbucket failed")
1053 require.NoErrorf(t, b.Put([]byte("baz"), []byte("0001")), "put 'baz' failed")
1054 require.NoErrorf(t, b.Put([]byte("bar"), []byte("0002")), "put 'bar' failed")
1055 _, err = b.CreateBucket([]byte("csubbucket"))
1056 require.NoErrorf(t, err, "creation of subbucket failed")
1057
1058 verifyReads(b)
1059
1060 return nil
1061 })
1062 assert.NoErrorf(t, err, "db.Update failed")
1063 err = db.View(func(tx *bolt.Tx) error {
1064 b := tx.Bucket([]byte("widgets"))
1065 require.NotNil(t, b, "bucket opening failed")
1066 verifyReads(b)
1067 return nil
1068 })
1069 assert.NoErrorf(t, err, "db.View failed")
1070}
1071
1072func TestBucket_ForEachBucket_NoBuckets(t *testing.T) {
1073 db := btesting.MustCreateDB(t)

Callers

nothing calls this directly

Calls 7

MustCreateDBFunction · 0.92
ForEachBucketMethod · 0.80
UpdateMethod · 0.80
ViewMethod · 0.80
CreateBucketMethod · 0.45
PutMethod · 0.45
BucketMethod · 0.45

Tested by

no test coverage detected