Merge pull request #239 from anacrolix/master

Avoid panic when calling EqualValues with nil
pull/240/head
Ernesto Jiménez 2015-11-07 12:43:16 +00:00
commit 82616deabd
2 changed files with 10 additions and 1 deletions

View File

@ -51,8 +51,11 @@ func ObjectsAreEqualValues(expected, actual interface{}) bool {
}
actualType := reflect.TypeOf(actual)
if actualType == nil {
return false
}
expectedValue := reflect.ValueOf(expected)
if expectedValue.Type().ConvertibleTo(actualType) {
if expectedValue.IsValid() && expectedValue.Type().ConvertibleTo(actualType) {
// Attempt comparison after type conversion
return reflect.DeepEqual(expectedValue.Convert(actualType).Interface(), actual)
}

View File

@ -132,6 +132,12 @@ func TestObjectsAreEqual(t *testing.T) {
if !ObjectsAreEqualValues(uint32(10), int32(10)) {
t.Error("ObjectsAreEqualValues should return true")
}
if ObjectsAreEqualValues(0, nil) {
t.Fail()
}
if ObjectsAreEqualValues(nil, 0) {
t.Fail()
}
}