9 "github.com/stretchr/testify/require"
12 func newTempDB(t *testing.T, backend string) (db DB, dbDir string) {
13 dirname, err := ioutil.TempDir("", "db_common_test")
15 return NewDB("testdb", backend, dirname), dirname
18 func TestDBIteratorSingleKey(t *testing.T) {
19 for backend := range backends {
20 t.Run(fmt.Sprintf("Backend %s", backend), func(t *testing.T) {
21 db, dir := newTempDB(t, backend)
22 defer os.RemoveAll(dir)
24 db.Set([]byte("1"), []byte("value_1"))
25 itr := db.IteratorPrefixWithStart(nil, nil, false)
26 require.Equal(t, []byte(""), itr.Key())
27 require.Equal(t, true, itr.Next())
28 require.Equal(t, []byte("1"), itr.Key())
33 func TestDBIteratorTwoKeys(t *testing.T) {
34 for backend := range backends {
35 t.Run(fmt.Sprintf("Backend %s", backend), func(t *testing.T) {
36 db, dir := newTempDB(t, backend)
37 defer os.RemoveAll(dir)
39 db.SetSync([]byte("1"), []byte("value_1"))
40 db.SetSync([]byte("2"), []byte("value_1"))
42 itr := db.IteratorPrefixWithStart(nil, []byte("1"), false)
44 require.Equal(t, []byte("1"), itr.Key())
46 require.Equal(t, true, itr.Next())
47 itr = db.IteratorPrefixWithStart(nil, []byte("2"), false)
49 require.Equal(t, false, itr.Next())
54 func TestDBIterator(t *testing.T) {
55 dirname, err := ioutil.TempDir("", "db_common_test")
58 db, err := NewGoLevelDB("testdb", dirname)
68 db.SetSync([]byte("aaa1"), []byte("value_1"))
69 db.SetSync([]byte("aaa22"), []byte("value_2"))
70 db.SetSync([]byte("bbb22"), []byte("value_3"))
72 itr := db.IteratorPrefixWithStart([]byte("aaa"), []byte("aaa1"), false)
75 require.Equal(t, true, itr.Next())
76 require.Equal(t, []byte("aaa22"), itr.Key())
78 require.Equal(t, false, itr.Next())
80 itr = db.IteratorPrefixWithStart([]byte("aaa"), nil, false)
82 require.Equal(t, true, itr.Next())
83 require.Equal(t, []byte("aaa1"), itr.Key())
85 require.Equal(t, true, itr.Next())
86 require.Equal(t, []byte("aaa22"), itr.Key())
88 require.Equal(t, false, itr.Next())
90 itr = db.IteratorPrefixWithStart([]byte("bbb"), []byte("aaa1"), false)
91 require.Equal(t, false, itr.Next())
94 func TestDBIteratorReverse(t *testing.T) {
95 dirname, err := ioutil.TempDir("", "db_common_test")
98 db, err := NewGoLevelDB("testdb", dirname)
105 os.RemoveAll(dirname)
108 db.SetSync([]byte("aaa1"), []byte("value_1"))
109 db.SetSync([]byte("aaa22"), []byte("value_2"))
110 db.SetSync([]byte("bbb22"), []byte("value_3"))
112 itr := db.IteratorPrefixWithStart([]byte("aaa"), []byte("aaa22"), true)
115 require.Equal(t, true, itr.Next())
116 require.Equal(t, []byte("aaa1"), itr.Key())
118 require.Equal(t, false, itr.Next())
120 itr = db.IteratorPrefixWithStart([]byte("aaa"), nil, true)
122 require.Equal(t, true, itr.Next())
123 require.Equal(t, []byte("aaa22"), itr.Key())
125 require.Equal(t, true, itr.Next())
126 require.Equal(t, []byte("aaa1"), itr.Key())
128 require.Equal(t, false, itr.Next())
130 require.Equal(t, false, itr.Next())
132 itr = db.IteratorPrefixWithStart([]byte("bbb"), []byte("aaa1"), true)
133 require.Equal(t, false, itr.Next())