package matchers import ( "fmt" "runtime" "github.com/onsi/gomega/format" ) type BeIdenticalToMatcher struct { Expected interface{} } func (matcher *BeIdenticalToMatcher) Match(actual interface{}) (success bool, matchErr error) { if actual == nil && matcher.Expected == nil { return false, fmt.Errorf("Refusing to compare to .\nBe explicit and use BeNil() instead. This is to avoid mistakes where both sides of an assertion are erroneously uninitialized.") } defer func() { if r := recover(); r != nil { if _, ok := r.(runtime.Error); ok { success = false matchErr = nil } } }() return actual == matcher.Expected, nil } func (matcher *BeIdenticalToMatcher) FailureMessage(actual interface{}) string { return format.Message(actual, "to be identical to", matcher.Expected) } func (matcher *BeIdenticalToMatcher) NegatedFailureMessage(actual interface{}) string { return format.Message(actual, "not to be identical to", matcher.Expected) }