diff --git a/assert/assertions.go b/assert/assertions.go index 166f63726..1ea3cdba0 100644 --- a/assert/assertions.go +++ b/assert/assertions.go @@ -1497,8 +1497,12 @@ func InDeltaSlice(t TestingT, expected, actual interface{}, delta float64, msgAn actualSlice := reflect.ValueOf(actual) expectedSlice := reflect.ValueOf(expected) - for i := 0; i < actualSlice.Len(); i++ { - result := InDelta(t, actualSlice.Index(i).Interface(), expectedSlice.Index(i).Interface(), delta, msgAndArgs...) + if actualSlice.Len() != expectedSlice.Len() { + return Fail(t, fmt.Sprintf("Lengths of slices must be equal: expected %d, got %d", expectedSlice.Len(), actualSlice.Len()), msgAndArgs...) + } + + for i := 0; i < expectedSlice.Len(); i++ { + result := InDelta(t, expectedSlice.Index(i).Interface(), actualSlice.Index(i).Interface(), delta, msgAndArgs...) if !result { return result } diff --git a/assert/assertions_test.go b/assert/assertions_test.go index 11642e096..38f37d4f0 100644 --- a/assert/assertions_test.go +++ b/assert/assertions_test.go @@ -2360,6 +2360,8 @@ func TestInDeltaSlice(t *testing.T) { 0.1), "{1, NaN, 2} is not element-wise close to {0, NaN, 3} in delta=0.1") False(t, InDeltaSlice(mockT, "", nil, 1), "Expected non numeral slices to fail") + False(t, InDeltaSlice(mockT, []float64{1.0, 2.0, 3.0}, []float64{1.0, 2.0}, 0.1), "Expected different length slices to fail") + False(t, InDeltaSlice(mockT, []float64{1.0, 2.0}, []float64{1.0, 2.0, 3.0}, 0.1), "Expected different length slices to fail") } func TestInDeltaMapValues(t *testing.T) {