- package db
-
- import "testing"
-
- func mockDBWithStuff() DB {
- db := NewMemDB()
- // Under "key" prefix
- db.Set(bz("key"), bz("value"))
- db.Set(bz("key1"), bz("value1"))
- db.Set(bz("key2"), bz("value2"))
- db.Set(bz("key3"), bz("value3"))
- db.Set(bz("something"), bz("else"))
- db.Set(bz(""), bz(""))
- db.Set(bz("k"), bz("val"))
- db.Set(bz("ke"), bz("valu"))
- db.Set(bz("kee"), bz("valuu"))
- return db
- }
-
- func TestPrefixDBSimple(t *testing.T) {
- db := mockDBWithStuff()
- pdb := NewPrefixDB(db, bz("key"))
-
- checkValue(t, pdb, bz("key"), nil)
- checkValue(t, pdb, bz(""), bz("value"))
- checkValue(t, pdb, bz("key1"), nil)
- checkValue(t, pdb, bz("1"), bz("value1"))
- checkValue(t, pdb, bz("key2"), nil)
- checkValue(t, pdb, bz("2"), bz("value2"))
- checkValue(t, pdb, bz("key3"), nil)
- checkValue(t, pdb, bz("3"), bz("value3"))
- checkValue(t, pdb, bz("something"), nil)
- checkValue(t, pdb, bz("k"), nil)
- checkValue(t, pdb, bz("ke"), nil)
- checkValue(t, pdb, bz("kee"), nil)
- }
-
- func TestPrefixDBIterator1(t *testing.T) {
- db := mockDBWithStuff()
- pdb := NewPrefixDB(db, bz("key"))
-
- itr := pdb.Iterator(nil, nil)
- checkDomain(t, itr, nil, nil)
- checkItem(t, itr, bz(""), bz("value"))
- checkNext(t, itr, true)
- checkItem(t, itr, bz("1"), bz("value1"))
- checkNext(t, itr, true)
- checkItem(t, itr, bz("2"), bz("value2"))
- checkNext(t, itr, true)
- checkItem(t, itr, bz("3"), bz("value3"))
- checkNext(t, itr, false)
- checkInvalid(t, itr)
- itr.Close()
- }
-
- func TestPrefixDBIterator2(t *testing.T) {
- db := mockDBWithStuff()
- pdb := NewPrefixDB(db, bz("key"))
-
- itr := pdb.Iterator(nil, bz(""))
- checkDomain(t, itr, nil, bz(""))
- checkInvalid(t, itr)
- itr.Close()
- }
-
- func TestPrefixDBIterator3(t *testing.T) {
- db := mockDBWithStuff()
- pdb := NewPrefixDB(db, bz("key"))
-
- itr := pdb.Iterator(bz(""), nil)
- checkDomain(t, itr, bz(""), nil)
- checkItem(t, itr, bz(""), bz("value"))
- checkNext(t, itr, true)
- checkItem(t, itr, bz("1"), bz("value1"))
- checkNext(t, itr, true)
- checkItem(t, itr, bz("2"), bz("value2"))
- checkNext(t, itr, true)
- checkItem(t, itr, bz("3"), bz("value3"))
- checkNext(t, itr, false)
- checkInvalid(t, itr)
- itr.Close()
- }
-
- func TestPrefixDBIterator4(t *testing.T) {
- db := mockDBWithStuff()
- pdb := NewPrefixDB(db, bz("key"))
-
- itr := pdb.Iterator(bz(""), bz(""))
- checkDomain(t, itr, bz(""), bz(""))
- checkInvalid(t, itr)
- itr.Close()
- }
-
- func TestPrefixDBReverseIterator1(t *testing.T) {
- db := mockDBWithStuff()
- pdb := NewPrefixDB(db, bz("key"))
-
- itr := pdb.ReverseIterator(nil, nil)
- checkDomain(t, itr, nil, nil)
- checkItem(t, itr, bz("3"), bz("value3"))
- checkNext(t, itr, true)
- checkItem(t, itr, bz("2"), bz("value2"))
- checkNext(t, itr, true)
- checkItem(t, itr, bz("1"), bz("value1"))
- checkNext(t, itr, true)
- checkItem(t, itr, bz(""), bz("value"))
- checkNext(t, itr, false)
- checkInvalid(t, itr)
- itr.Close()
- }
-
- func TestPrefixDBReverseIterator2(t *testing.T) {
- db := mockDBWithStuff()
- pdb := NewPrefixDB(db, bz("key"))
-
- itr := pdb.ReverseIterator(bz(""), nil)
- checkDomain(t, itr, bz(""), nil)
- checkItem(t, itr, bz("3"), bz("value3"))
- checkNext(t, itr, true)
- checkItem(t, itr, bz("2"), bz("value2"))
- checkNext(t, itr, true)
- checkItem(t, itr, bz("1"), bz("value1"))
- checkNext(t, itr, true)
- checkItem(t, itr, bz(""), bz("value"))
- checkNext(t, itr, false)
- checkInvalid(t, itr)
- itr.Close()
- }
-
- func TestPrefixDBReverseIterator3(t *testing.T) {
- db := mockDBWithStuff()
- pdb := NewPrefixDB(db, bz("key"))
-
- itr := pdb.ReverseIterator(nil, bz(""))
- checkDomain(t, itr, nil, bz(""))
- checkInvalid(t, itr)
- itr.Close()
- }
-
- func TestPrefixDBReverseIterator4(t *testing.T) {
- db := mockDBWithStuff()
- pdb := NewPrefixDB(db, bz("key"))
-
- itr := pdb.ReverseIterator(bz(""), bz(""))
- checkDomain(t, itr, bz(""), bz(""))
- checkInvalid(t, itr)
- itr.Close()
- }
-
- func TestPrefixDBReverseIterator5(t *testing.T) {
- db := mockDBWithStuff()
- pdb := NewPrefixDB(db, bz("key"))
-
- itr := pdb.ReverseIterator(bz("1"), nil)
- checkDomain(t, itr, bz("1"), nil)
- checkItem(t, itr, bz("3"), bz("value3"))
- checkNext(t, itr, true)
- checkItem(t, itr, bz("2"), bz("value2"))
- checkNext(t, itr, true)
- checkItem(t, itr, bz("1"), bz("value1"))
- checkNext(t, itr, false)
- checkInvalid(t, itr)
- itr.Close()
- }
-
- func TestPrefixDBReverseIterator6(t *testing.T) {
- db := mockDBWithStuff()
- pdb := NewPrefixDB(db, bz("key"))
-
- itr := pdb.ReverseIterator(bz("2"), nil)
- checkDomain(t, itr, bz("2"), nil)
- checkItem(t, itr, bz("3"), bz("value3"))
- checkNext(t, itr, true)
- checkItem(t, itr, bz("2"), bz("value2"))
- checkNext(t, itr, false)
- checkInvalid(t, itr)
- itr.Close()
- }
-
- func TestPrefixDBReverseIterator7(t *testing.T) {
- db := mockDBWithStuff()
- pdb := NewPrefixDB(db, bz("key"))
-
- itr := pdb.ReverseIterator(nil, bz("2"))
- checkDomain(t, itr, nil, bz("2"))
- checkItem(t, itr, bz("1"), bz("value1"))
- checkNext(t, itr, true)
- checkItem(t, itr, bz(""), bz("value"))
- checkNext(t, itr, false)
- checkInvalid(t, itr)
- itr.Close()
- }
|