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 }