45 lines
1.2 KiB
Go
45 lines
1.2 KiB
Go
|
package db
|
||
|
|
||
|
import "testing"
|
||
|
|
||
|
func TestIteratePrefix(t *testing.T) {
|
||
|
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"))
|
||
|
xitr := db.Iterator(nil, nil)
|
||
|
xitr.Key()
|
||
|
|
||
|
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)
|
||
|
|
||
|
itr := pdb.Iterator(nil, nil)
|
||
|
itr.Key()
|
||
|
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"))
|
||
|
itr.Close()
|
||
|
}
|