Ensure that a Tx cursor can reverse iterate over subbuckets.
(t *testing.T)
| 836 | |
| 837 | // Ensure that a Tx cursor can reverse iterate over subbuckets. |
| 838 | func 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 | |
| 878 | func ExampleCursor() { |
| 879 | // Open the database. |
nothing calls this directly
no test coverage detected