37 lines
988 B
Go
37 lines
988 B
Go
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 <nil> to <nil>.\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)
|
|
}
|