db: fix memdb iterator

This commit is contained in:
Ethan Buchman 2017-08-25 16:35:37 -04:00
parent fe08fc00c8
commit 8f1dea89f5
2 changed files with 29 additions and 1 deletions

View File

@ -82,7 +82,7 @@ func newMemDBIterator() *memDBIterator {
}
func (it *memDBIterator) Next() bool {
if it.last >= len(it.keys) {
if it.last >= len(it.keys)-1 {
return false
}
it.last++

28
db/mem_db_test.go Normal file
View File

@ -0,0 +1,28 @@
package db
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestMemDbIterator(t *testing.T) {
db := NewMemDB()
keys := make([][]byte, 100)
for i := 0; i < 100; i++ {
keys[i] = []byte{byte(i)}
}
value := []byte{5}
for _, k := range keys {
db.Set(k, value)
}
iter := db.Iterator()
i := 0
for iter.Next() {
assert.Equal(t, db.Get(iter.Key()), iter.Value(), "values dont match for key")
i += 1
}
assert.Equal(t, i, len(db.db), "iterator didnt cover whole db")
}