Ensure that a Tx cursor can iterate over subbuckets.
(t *testing.T)
| 795 | |
| 796 | // Ensure that a Tx cursor can iterate over subbuckets. |
| 797 | func TestCursor_QuickCheck_BucketsOnly(t *testing.T) { |
| 798 | db := btesting.MustCreateDB(t) |
| 799 | |
| 800 | if err := db.Update(func(tx *bolt.Tx) error { |
| 801 | b, err := tx.CreateBucket([]byte("widgets")) |
| 802 | if err != nil { |
| 803 | t.Fatal(err) |
| 804 | } |
| 805 | if _, err := b.CreateBucket([]byte("foo")); err != nil { |
| 806 | t.Fatal(err) |
| 807 | } |
| 808 | if _, err := b.CreateBucket([]byte("bar")); err != nil { |
| 809 | t.Fatal(err) |
| 810 | } |
| 811 | if _, err := b.CreateBucket([]byte("baz")); err != nil { |
| 812 | t.Fatal(err) |
| 813 | } |
| 814 | return nil |
| 815 | }); err != nil { |
| 816 | t.Fatal(err) |
| 817 | } |
| 818 | |
| 819 | if err := db.View(func(tx *bolt.Tx) error { |
| 820 | var names []string |
| 821 | c := tx.Bucket([]byte("widgets")).Cursor() |
| 822 | for k, v := c.First(); k != nil; k, v = c.Next() { |
| 823 | names = append(names, string(k)) |
| 824 | if v != nil { |
| 825 | t.Fatalf("unexpected value: %v", v) |
| 826 | } |
| 827 | } |
| 828 | if !reflect.DeepEqual(names, []string{"bar", "baz", "foo"}) { |
| 829 | t.Fatalf("unexpected names: %+v", names) |
| 830 | } |
| 831 | return nil |
| 832 | }); err != nil { |
| 833 | t.Fatal(err) |
| 834 | } |
| 835 | } |
| 836 | |
| 837 | // Ensure that a Tx cursor can reverse iterate over subbuckets. |
| 838 | func TestCursor_QuickCheck_BucketsOnly_Reverse(t *testing.T) { |
nothing calls this directly
no test coverage detected