diff --git a/assert/assertions.go b/assert/assertions.go index cdcff84..780b172 100644 --- a/assert/assertions.go +++ b/assert/assertions.go @@ -37,10 +37,10 @@ func ObjectsAreEqual(expected, actual interface{}) bool { } actualType := reflect.TypeOf(actual) - expectedType := reflect.TypeOf(expected) - if actualType.ConvertibleTo(expectedType) { - actualValue := reflect.ValueOf(actual).Convert(expectedType) - if reflect.DeepEqual(actualValue.Interface(), expected) { + if actualType.ConvertibleTo(reflect.TypeOf(expected)) { + expectedValue := reflect.ValueOf(expected) + // Attempt comparison after type conversion + if reflect.DeepEqual(actual, expectedValue.Convert(actualType).Interface()) { return true } } diff --git a/assert/assertions_test.go b/assert/assertions_test.go index bb63be2..607e9c3 100644 --- a/assert/assertions_test.go +++ b/assert/assertions_test.go @@ -40,6 +40,9 @@ func TestObjectsAreEqual(t *testing.T) { if !ObjectsAreEqual(nil, nil) { t.Error("objectsAreEqual should return true") } + if ObjectsAreEqual(map[int]int{5: 10}, map[int]int{10: 20}) { + t.Error("objectsAreEqual should return false") + } } @@ -223,10 +226,10 @@ func TestContains(t *testing.T) { mockT := new(testing.T) list := []string{"Foo", "Bar"} complexList := []*A{ - &A{"b", "c"}, - &A{"d", "e"}, - &A{"g", "h"}, - &A{"j", "k"}, + {"b", "c"}, + {"d", "e"}, + {"g", "h"}, + {"j", "k"}, } if !Contains(mockT, "Hello World", "Hello") {