30 lines
690 B
Go
30 lines
690 B
Go
package ormmocks
|
|
|
|
import (
|
|
"github.com/golang/mock/gomock"
|
|
"github.com/google/go-cmp/cmp"
|
|
"google.golang.org/protobuf/proto"
|
|
"google.golang.org/protobuf/testing/protocmp"
|
|
)
|
|
|
|
// Code adapted from MIT-licensed https://github.com/budougumi0617/cmpmock/blob/master/diffmatcher.go
|
|
|
|
// Eq returns a gomock.Matcher which uses go-cmp to compare protobuf messages.
|
|
func Eq(message proto.Message) gomock.Matcher {
|
|
return &protoEq{message: message}
|
|
}
|
|
|
|
type protoEq struct {
|
|
message interface{}
|
|
diff string
|
|
}
|
|
|
|
func (p protoEq) Matches(x interface{}) bool {
|
|
p.diff = cmp.Diff(x, p.message, protocmp.Transform())
|
|
return len(p.diff) == 0
|
|
}
|
|
|
|
func (p protoEq) String() string {
|
|
return p.diff
|
|
}
|