OSDN Git Service

fix paging (#235)
[bytom/vapor.git] / database / leveldb / db_test.go
index ccd37ed..d955da3 100644 (file)
@@ -22,7 +22,7 @@ func TestDBIteratorSingleKey(t *testing.T) {
                        defer os.RemoveAll(dir)
 
                        db.Set([]byte("1"), []byte("value_1"))
-                       itr := db.IteratorPrefixWithStart(nil, nil)
+                       itr := db.IteratorPrefixWithStart(nil, nil, false)
                        require.Equal(t, []byte(""), itr.Key())
                        require.Equal(t, true, itr.Next())
                        require.Equal(t, []byte("1"), itr.Key())
@@ -39,12 +39,12 @@ func TestDBIteratorTwoKeys(t *testing.T) {
                        db.SetSync([]byte("1"), []byte("value_1"))
                        db.SetSync([]byte("2"), []byte("value_1"))
 
-                       itr := db.IteratorPrefixWithStart(nil, []byte("1"))
+                       itr := db.IteratorPrefixWithStart(nil, []byte("1"), false)
 
                        require.Equal(t, []byte("1"), itr.Key())
 
                        require.Equal(t, true, itr.Next())
-                       itr = db.IteratorPrefixWithStart(nil, []byte("2"))
+                       itr = db.IteratorPrefixWithStart(nil, []byte("2"), false)
 
                        require.Equal(t, false, itr.Next())
                })
@@ -69,7 +69,7 @@ func TestDBIterator(t *testing.T) {
        db.SetSync([]byte("aaa22"), []byte("value_2"))
        db.SetSync([]byte("bbb22"), []byte("value_3"))
 
-       itr := db.IteratorPrefixWithStart([]byte("aaa"), []byte("aaa1"))
+       itr := db.IteratorPrefixWithStart([]byte("aaa"), []byte("aaa1"), false)
        defer itr.Release()
 
        require.Equal(t, true, itr.Next())
@@ -77,7 +77,7 @@ func TestDBIterator(t *testing.T) {
 
        require.Equal(t, false, itr.Next())
 
-       itr = db.IteratorPrefixWithStart([]byte("aaa"), nil)
+       itr = db.IteratorPrefixWithStart([]byte("aaa"), nil, false)
 
        require.Equal(t, true, itr.Next())
        require.Equal(t, []byte("aaa1"), itr.Key())
@@ -87,6 +87,48 @@ func TestDBIterator(t *testing.T) {
 
        require.Equal(t, false, itr.Next())
 
-       itr = db.IteratorPrefixWithStart([]byte("bbb"), []byte("aaa1"))
+       itr = db.IteratorPrefixWithStart([]byte("bbb"), []byte("aaa1"), false)
+       require.Equal(t, false, itr.Next())
+}
+
+func TestDBIteratorReverse(t *testing.T) {
+       dirname, err := ioutil.TempDir("", "db_common_test")
+       require.Nil(t, err)
+
+       db, err := NewGoLevelDB("testdb", dirname)
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       defer func() {
+               db.Close()
+               os.RemoveAll(dirname)
+       }()
+
+       db.SetSync([]byte("aaa1"), []byte("value_1"))
+       db.SetSync([]byte("aaa22"), []byte("value_2"))
+       db.SetSync([]byte("bbb22"), []byte("value_3"))
+
+       itr := db.IteratorPrefixWithStart([]byte("aaa"), []byte("aaa22"), true)
+       defer itr.Release()
+
+       require.Equal(t, true, itr.Next())
+       require.Equal(t, []byte("aaa1"), itr.Key())
+
+       require.Equal(t, false, itr.Next())
+
+       itr = db.IteratorPrefixWithStart([]byte("aaa"), nil, true)
+
+       require.Equal(t, true, itr.Next())
+       require.Equal(t, []byte("aaa22"), itr.Key())
+
+       require.Equal(t, true, itr.Next())
+       require.Equal(t, []byte("aaa1"), itr.Key())
+
+       require.Equal(t, false, itr.Next())
+
+       require.Equal(t, false, itr.Next())
+
+       itr = db.IteratorPrefixWithStart([]byte("bbb"), []byte("aaa1"), true)
        require.Equal(t, false, itr.Next())
 }