52 lines
858 B
Go
52 lines
858 B
Go
package mdb
|
|
|
|
import (
|
|
"fmt"
|
|
"reflect"
|
|
)
|
|
|
|
func (bt *BTreeIndex[T]) Equals(rhs *BTreeIndex[T]) error {
|
|
if bt.Len() != rhs.Len() {
|
|
return fmt.Errorf("Expected %d items, but found %d.", bt.Len(), rhs.Len())
|
|
}
|
|
|
|
it1 := bt.Ascend()
|
|
defer it1.Close()
|
|
|
|
it2 := rhs.Ascend()
|
|
defer it2.Close()
|
|
|
|
for it1.Next() {
|
|
it2.Next()
|
|
|
|
v1 := it1.Value()
|
|
v2 := it2.Value()
|
|
|
|
if !reflect.DeepEqual(v1, v2) {
|
|
return fmt.Errorf("Value mismatch: %v != %v", v1, v2)
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (bt *BTreeIndex[T]) EqualsList(data []*T) error {
|
|
if bt.Len() != len(data) {
|
|
return fmt.Errorf("Expected %d items, but found %d.", bt.Len(), len(data))
|
|
}
|
|
|
|
it1 := bt.Ascend()
|
|
defer it1.Close()
|
|
|
|
for _, v1 := range data {
|
|
it1.Next()
|
|
v2 := it1.Value()
|
|
|
|
if !reflect.DeepEqual(v1, v2) {
|
|
return fmt.Errorf("Value mismatch: %v != %v", v1, v2)
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|