|  | 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) | 
|  | } |