Fixed struct comparisons with the Equals checker.
diff --git a/checkers.go b/checkers.go
index b1ab49b..c5e5d2f 100644
--- a/checkers.go
+++ b/checkers.go
@@ -201,14 +201,7 @@
func (checker *equalsChecker) Check(obtained, expected interface{}) (
result bool, error string) {
- // This will use a fast path to check for equality of normal types,
- // and then fallback to reflect.DeepEqual if things go wrong.
- defer func() {
- if recover() != nil {
- result = reflect.DeepEqual(obtained, expected)
- }
- }()
- return obtained == expected, ""
+ return reflect.DeepEqual(obtained, expected), ""
}
diff --git a/checkers_test.go b/checkers_test.go
index 79d1671..db7d21c 100644
--- a/checkers_test.go
+++ b/checkers_test.go
@@ -83,6 +83,10 @@
}
+type simpleStruct struct {
+ i int
+}
+
func (s *CheckersS) TestEquals(c *gocheck.C) {
testInfo(c, gocheck.Equals, "Equals", "obtained", "expected")
@@ -99,6 +103,14 @@
// Arrays
testCheck(c, gocheck.Equals, []byte{1,2}, []byte{1,2}, true, "")
testCheck(c, gocheck.Equals, []byte{1,2}, []byte{1,3}, false, "")
+
+ // Struct values
+ testCheck(c, gocheck.Equals, simpleStruct{1}, simpleStruct{1}, true, "")
+ testCheck(c, gocheck.Equals, simpleStruct{1}, simpleStruct{2}, false, "")
+
+ // Struct pointers
+ testCheck(c, gocheck.Equals, &simpleStruct{1}, &simpleStruct{1}, true, "")
+ testCheck(c, gocheck.Equals, &simpleStruct{1}, &simpleStruct{2}, false, "")
}
func (s *CheckersS) TestMatches(c *gocheck.C) {