@@ -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