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

Function TestCursor_QuickCheck_BucketsOnly_Reverse

cursor_test.go:838–876  ·  view source on GitHub ↗

Ensure that a Tx cursor can reverse iterate over subbuckets.

(t *testing.T)

Source from the content-addressed store, hash-verified

836
837// Ensure that a Tx cursor can reverse iterate over subbuckets.
838func TestCursor_QuickCheck_BucketsOnly_Reverse(t *testing.T) {
839 db := btesting.MustCreateDB(t)
840
841 if err := db.Update(func(tx *bolt.Tx) error {
842 b, err := tx.CreateBucket([]byte("widgets"))
843 if err != nil {
844 t.Fatal(err)
845 }
846 if _, err := b.CreateBucket([]byte("foo")); err != nil {
847 t.Fatal(err)
848 }
849 if _, err := b.CreateBucket([]byte("bar")); err != nil {
850 t.Fatal(err)
851 }
852 if _, err := b.CreateBucket([]byte("baz")); err != nil {
853 t.Fatal(err)
854 }
855 return nil
856 }); err != nil {
857 t.Fatal(err)
858 }
859
860 if err := db.View(func(tx *bolt.Tx) error {
861 var names []string
862 c := tx.Bucket([]byte("widgets")).Cursor()
863 for k, v := c.Last(); k != nil; k, v = c.Prev() {
864 names = append(names, string(k))
865 if v != nil {
866 t.Fatalf("unexpected value: %v", v)
867 }
868 }
869 if !reflect.DeepEqual(names, []string{"foo", "baz", "bar"}) {
870 t.Fatalf("unexpected names: %+v", names)
871 }
872 return nil
873 }); err != nil {
874 t.Fatal(err)
875 }
876}
877
878func ExampleCursor() {
879 // Open the database.

Callers

nothing calls this directly

Calls 10

MustCreateDBFunction · 0.92
UpdateMethod · 0.80
ViewMethod · 0.80
LastMethod · 0.80
PrevMethod · 0.80
FatalMethod · 0.65
FatalfMethod · 0.65
CreateBucketMethod · 0.45
CursorMethod · 0.45
BucketMethod · 0.45

Tested by

no test coverage detected