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() }