29 lines
562 B
Go
29 lines
562 B
Go
package mdb
|
|
|
|
import (
|
|
"fmt"
|
|
"reflect"
|
|
)
|
|
|
|
func (m *MapIndex[K, T]) Equals(rhs *MapIndex[K, T]) error {
|
|
return m.EqualsMap(rhs.m)
|
|
}
|
|
|
|
func (m *MapIndex[K, T]) EqualsMap(data map[K]*T) error {
|
|
if len(m.m) != len(data) {
|
|
return fmt.Errorf("Expected %d items, but found %d.", len(data), len(m.m))
|
|
}
|
|
|
|
for key, exp := range data {
|
|
val, ok := m.Get(key)
|
|
if !ok {
|
|
return fmt.Errorf("No value for %v. Expected: %v", key, *exp)
|
|
}
|
|
if !reflect.DeepEqual(val, *exp) {
|
|
return fmt.Errorf("Value mismatch %v: %v != %v", key, val, *exp)
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|