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

Function TestBucket_ForEach_ShortCircuit

bucket_test.go:1110–1145  ·  bucket_test.go::TestBucket_ForEach_ShortCircuit

Ensure a database can stop iteration early.

(t *testing.T)

Source from the content-addressed store, hash-verified

1108
1109// Ensure a database can stop iteration early.
1110func TestBucket_ForEach_ShortCircuit(t *testing.T) {
1111 db := btesting.MustCreateDB(t)
1112 if err := db.Update(func(tx *bolt.Tx) error {
1113 b, err := tx.CreateBucket([]byte("widgets"))
1114 if err != nil {
1115 t.Fatal(err)
1116 }
1117 if err := b.Put([]byte("bar"), []byte("0000")); err != nil {
1118 t.Fatal(err)
1119 }
1120 if err := b.Put([]byte("baz"), []byte("0000")); err != nil {
1121 t.Fatal(err)
1122 }
1123 if err := b.Put([]byte("foo"), []byte("0000")); err != nil {
1124 t.Fatal(err)
1125 }
1126
1127 var index int
1128 if err := tx.Bucket([]byte("widgets")).ForEach(func(k, v []byte) error {
1129 index++
1130 if bytes.Equal(k, []byte("baz")) {
1131 return errors.New("marker")
1132 }
1133 return nil
1134 }); err == nil || err.Error() != "marker" {
1135 t.Fatalf("unexpected error: %s", err)
1136 }
1137 if index != 2 {
1138 t.Fatalf("unexpected index: %d", index)
1139 }
1140
1141 return nil
1142 }); err != nil {
1143 t.Fatal(err)
1144 }
1145}
1146
1147// Ensure that looping over a bucket on a closed database returns an error.
1148func TestBucket_ForEach_Closed(t *testing.T) {

Callers

nothing calls this directly

Calls 9

MustCreateDBFunction · 0.92
UpdateMethod · 0.80
FatalMethod · 0.65
ErrorMethod · 0.65
FatalfMethod · 0.65
CreateBucketMethod · 0.45
PutMethod · 0.45
ForEachMethod · 0.45
BucketMethod · 0.45

Tested by

no test coverage detected