2016-03-05 20:01:58 +00:00
package matchers
import (
"fmt"
"reflect"
"github.com/onsi/gomega/format"
)
type EqualMatcher struct {
Expected interface { }
}
func ( matcher * EqualMatcher ) Match ( actual interface { } ) ( success bool , err 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." )
}
return reflect . DeepEqual ( actual , matcher . Expected ) , nil
}
func ( matcher * EqualMatcher ) FailureMessage ( actual interface { } ) ( message string ) {
2017-04-05 14:34:41 +00:00
actualString , actualOK := actual . ( string )
expectedString , expectedOK := matcher . Expected . ( string )
if actualOK && expectedOK {
return format . MessageWithDiff ( actualString , "to equal" , expectedString )
}
2016-03-05 20:01:58 +00:00
return format . Message ( actual , "to equal" , matcher . Expected )
}
func ( matcher * EqualMatcher ) NegatedFailureMessage ( actual interface { } ) ( message string ) {
return format . Message ( actual , "not to equal" , matcher . Expected )
}