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)
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"))
44 require.Equal(t, []byte("1"), itr.Key())
46 require.Equal(t, true, itr.Next())
47 itr = db.IteratorPrefixWithStart(nil, []byte("2"))
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"))
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)
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"))
91 require.Equal(t, false, itr.Next())