...
1
2
3
4
5
6
7 package leveldb
8
9 import (
10 . "github.com/onsi/gomega"
11
12 "github.com/syndtr/goleveldb/leveldb/iterator"
13 "github.com/syndtr/goleveldb/leveldb/opt"
14 "github.com/syndtr/goleveldb/leveldb/testutil"
15 "github.com/syndtr/goleveldb/leveldb/util"
16 )
17
18 type testingDB struct {
19 *DB
20 ro *opt.ReadOptions
21 wo *opt.WriteOptions
22 stor *testutil.Storage
23 }
24
25 func (t *testingDB) TestPut(key []byte, value []byte) error {
26 return t.Put(key, value, t.wo)
27 }
28
29 func (t *testingDB) TestDelete(key []byte) error {
30 return t.Delete(key, t.wo)
31 }
32
33 func (t *testingDB) TestGet(key []byte) (value []byte, err error) {
34 return t.Get(key, t.ro)
35 }
36
37 func (t *testingDB) TestHas(key []byte) (ret bool, err error) {
38 return t.Has(key, t.ro)
39 }
40
41 func (t *testingDB) TestNewIterator(slice *util.Range) iterator.Iterator {
42 return t.NewIterator(slice, t.ro)
43 }
44
45 func (t *testingDB) TestClose() {
46 err := t.Close()
47 ExpectWithOffset(1, err).NotTo(HaveOccurred())
48 err = t.stor.Close()
49 ExpectWithOffset(1, err).NotTo(HaveOccurred())
50 }
51
52 func newTestingDB(o *opt.Options, ro *opt.ReadOptions, wo *opt.WriteOptions) *testingDB {
53 stor := testutil.NewStorage()
54 db, err := Open(stor, o)
55
56 Expect(err).NotTo(HaveOccurred())
57 return &testingDB{
58 DB: db,
59 ro: ro,
60 wo: wo,
61 stor: stor,
62 }
63 }
64
65 type testingTransaction struct {
66 *Transaction
67 ro *opt.ReadOptions
68 wo *opt.WriteOptions
69 }
70
71 func (t *testingTransaction) TestPut(key []byte, value []byte) error {
72 return t.Put(key, value, t.wo)
73 }
74
75 func (t *testingTransaction) TestDelete(key []byte) error {
76 return t.Delete(key, t.wo)
77 }
78
79 func (t *testingTransaction) TestGet(key []byte) (value []byte, err error) {
80 return t.Get(key, t.ro)
81 }
82
83 func (t *testingTransaction) TestHas(key []byte) (ret bool, err error) {
84 return t.Has(key, t.ro)
85 }
86
87 func (t *testingTransaction) TestNewIterator(slice *util.Range) iterator.Iterator {
88 return t.NewIterator(slice, t.ro)
89 }
90
91 func (t *testingTransaction) TestClose() {}
92
View as plain text