Skip to content

Commit 14d4b9b

Browse files
Merge pull request #1483 from stretchr/fix-1231-InEpsilonSlice-expected-actual-order
assert.InEpsilonSlice: fix expected/actual order and other improvements
2 parents 92533fa + f8dcfd6 commit 14d4b9b

1 file changed

Lines changed: 15 additions & 8 deletions

File tree

assert/assertions.go

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1457,19 +1457,26 @@ func InEpsilonSlice(t TestingT, expected, actual interface{}, epsilon float64, m
14571457
if h, ok := t.(tHelper); ok {
14581458
h.Helper()
14591459
}
1460-
if expected == nil || actual == nil ||
1461-
reflect.TypeOf(actual).Kind() != reflect.Slice ||
1462-
reflect.TypeOf(expected).Kind() != reflect.Slice {
1460+
1461+
if expected == nil || actual == nil {
14631462
return Fail(t, "Parameters must be slice", msgAndArgs...)
14641463
}
14651464

1466-
actualSlice := reflect.ValueOf(actual)
14671465
expectedSlice := reflect.ValueOf(expected)
1466+
actualSlice := reflect.ValueOf(actual)
14681467

1469-
for i := 0; i < actualSlice.Len(); i++ {
1470-
result := InEpsilon(t, actualSlice.Index(i).Interface(), expectedSlice.Index(i).Interface(), epsilon)
1471-
if !result {
1472-
return result
1468+
if expectedSlice.Type().Kind() != reflect.Slice {
1469+
return Fail(t, "Expected value must be slice", msgAndArgs...)
1470+
}
1471+
1472+
expectedLen := expectedSlice.Len()
1473+
if !IsType(t, expected, actual) || !Len(t, actual, expectedLen) {
1474+
return false
1475+
}
1476+
1477+
for i := 0; i < expectedLen; i++ {
1478+
if !InEpsilon(t, expectedSlice.Index(i).Interface(), actualSlice.Index(i).Interface(), epsilon, "at index %d", i) {
1479+
return false
14731480
}
14741481
}
14751482

0 commit comments

Comments
 (0)