mirror of
https://github.com/fluencelabs/tendermint
synced 2025-04-30 09:12:14 +00:00
* encodeByteSlice uses uvarint for length instead of varint * Implemented NewPrefixDB * Fix flowrate test (#165) * Complete implementation and fix tests * Add tests for MemBatch Write[Sync]
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()
|
|
}
|