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

Function TestCursor_LeafRootReverse

cursor_test.go:482–542  ·  view source on GitHub ↗

Ensure that a Tx cursor can iterate in reverse over a single root with a couple elements.

(t *testing.T)

Source from the content-addressed store, hash-verified

480
481// Ensure that a Tx cursor can iterate in reverse over a single root with a couple elements.
482func 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 {

Callers

nothing calls this directly

Calls 12

MustCreateDBFunction · 0.92
UpdateMethod · 0.80
BeginMethod · 0.80
LastMethod · 0.80
PrevMethod · 0.80
FatalMethod · 0.65
FatalfMethod · 0.65
RollbackMethod · 0.65
CreateBucketMethod · 0.45
PutMethod · 0.45
CursorMethod · 0.45
BucketMethod · 0.45

Tested by

no test coverage detected