test: add test case for memiterator.go (#22725)

Co-authored-by: heren-ke <fghjtuy@163.com>
This commit is contained in:
johson-ll 2024-12-03 18:34:13 +08:00 committed by GitHub
parent 6a52694ef7
commit 2964c5ef63
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -0,0 +1,73 @@
package internal
import (
"testing"
)
func TestMemIterator_Ascending(t *testing.T) {
db := NewBTree()
// db.set()
db.Set([]byte("a"), []byte("value_a"))
db.Set([]byte("b"), []byte("value_b"))
db.Set([]byte("c"), []byte("value_c"))
iterator := newMemIterator([]byte("a"), []byte("c"), db, true)
var result []string
for iterator.Valid() {
result = append(result, string(iterator.Key()))
iterator.Next()
}
expected := []string{"a", "b", "c"}
for i, key := range result {
if key != expected[i] {
t.Errorf("Expected %s, got %s", expected[i], key)
}
}
if iterator.Valid() {
t.Errorf("Iterator should be invalid after last item")
}
}
func TestMemIterator_Descending(t *testing.T) {
db := NewBTree()
db.Set([]byte("a"), []byte("value_a"))
db.Set([]byte("b"), []byte("value_b"))
db.Set([]byte("c"), []byte("value_c"))
db.Set([]byte("d"), []byte("value_d"))
iterator := newMemIterator([]byte("a"), []byte("d"), db, false)
var result []string
for iterator.Valid() {
result = append(result, string(iterator.Key()))
iterator.Next()
}
expected := []string{"c", "b", "a"}
for i, key := range result {
if key != expected[i] {
t.Errorf("Expected %s, got %s", expected[i], key)
}
}
if iterator.Valid() {
t.Errorf("Iterator should be invalid after last item")
}
}
func TestMemIterator_EmptyRange(t *testing.T) {
db := NewBTree()
db.Set([]byte("a"), []byte("value_a"))
db.Set([]byte("b"), []byte("value_b"))
db.Set([]byte("c"), []byte("value_c"))
iterator := newMemIterator([]byte("d"), []byte("e"), db, true)
if iterator.Valid() {
t.Errorf("Iterator should be invalid for empty range")
}
}