Ensure that a Tx cursor can iterate in reverse over a single root with a couple elements.
(t *testing.T)
| 480 | |
| 481 | // Ensure that a Tx cursor can iterate in reverse over a single root with a couple elements. |
| 482 | func TestCursor_LeafRootReverse(t *testing.T) { |
| 483 | db := btesting.MustCreateDB(t) |
| 484 | |
| 485 | if err := db.Update(func(tx *bolt.Tx) error { |
| 486 | b, err := tx.CreateBucket([]byte("widgets")) |
| 487 | if err != nil { |
| 488 | t.Fatal(err) |
| 489 | } |
| 490 | if err := b.Put([]byte("baz"), []byte{}); err != nil { |
| 491 | t.Fatal(err) |
| 492 | } |
| 493 | if err := b.Put([]byte("foo"), []byte{0}); err != nil { |
| 494 | t.Fatal(err) |
| 495 | } |
| 496 | if err := b.Put([]byte("bar"), []byte{1}); err != nil { |
| 497 | t.Fatal(err) |
| 498 | } |
| 499 | return nil |
| 500 | }); err != nil { |
| 501 | t.Fatal(err) |
| 502 | } |
| 503 | tx, err := db.Begin(false) |
| 504 | if err != nil { |
| 505 | t.Fatal(err) |
| 506 | } |
| 507 | c := tx.Bucket([]byte("widgets")).Cursor() |
| 508 | |
| 509 | if k, v := c.Last(); !bytes.Equal(k, []byte("foo")) { |
| 510 | t.Fatalf("unexpected key: %v", k) |
| 511 | } else if !bytes.Equal(v, []byte{0}) { |
| 512 | t.Fatalf("unexpected value: %v", v) |
| 513 | } |
| 514 | |
| 515 | if k, v := c.Prev(); !bytes.Equal(k, []byte("baz")) { |
| 516 | t.Fatalf("unexpected key: %v", k) |
| 517 | } else if !bytes.Equal(v, []byte{}) { |
| 518 | t.Fatalf("unexpected value: %v", v) |
| 519 | } |
| 520 | |
| 521 | if k, v := c.Prev(); !bytes.Equal(k, []byte("bar")) { |
| 522 | t.Fatalf("unexpected key: %v", k) |
| 523 | } else if !bytes.Equal(v, []byte{1}) { |
| 524 | t.Fatalf("unexpected value: %v", v) |
| 525 | } |
| 526 | |
| 527 | if k, v := c.Prev(); k != nil { |
| 528 | t.Fatalf("expected nil key: %v", k) |
| 529 | } else if v != nil { |
| 530 | t.Fatalf("expected nil value: %v", v) |
| 531 | } |
| 532 | |
| 533 | if k, v := c.Prev(); k != nil { |
| 534 | t.Fatalf("expected nil key: %v", k) |
| 535 | } else if v != nil { |
| 536 | t.Fatalf("expected nil value: %v", v) |
| 537 | } |
| 538 | |
| 539 | if err := tx.Rollback(); err != nil { |
nothing calls this directly
no test coverage detected