Skip to content

Commit 6e466af

Browse files
AurelioDeRosamarkelog
authored andcommitted
Tests: Account for array-like objects in jQuery.grep
Cherry-picked from 67b76f5 Closes gh-2605
1 parent 8cac6da commit 6e466af

File tree

1 file changed

+73
-6
lines changed

1 file changed

+73
-6
lines changed

test/unit/core.js

Lines changed: 73 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -975,16 +975,83 @@ QUnit.test( "jQuery.grep()", function( assert ) {
975975
assert.deepEqual( jQuery.grep( [], searchCriterion ), [], "Empty array" );
976976
assert.deepEqual( jQuery.grep( new Array( 4 ), searchCriterion ), [], "Sparse array" );
977977

978-
assert.deepEqual( jQuery.grep( [ 1, 2, 3, 4, 5, 6 ], searchCriterion ), [ 2, 4, 6 ], "Satisfying elements present" );
979-
assert.deepEqual( jQuery.grep( [ 1, 3, 5, 7 ], searchCriterion ), [], "Satisfying elements absent" );
978+
assert.deepEqual(
979+
jQuery.grep( [ 1, 2, 3, 4, 5, 6 ], searchCriterion ),
980+
[ 2, 4, 6 ],
981+
"Satisfying elements present"
982+
);
983+
assert.deepEqual(
984+
jQuery.grep( [ 1, 3, 5, 7 ], searchCriterion ),
985+
[],
986+
"Satisfying elements absent"
987+
);
980988

981-
assert.deepEqual( jQuery.grep( [ 1, 2, 3, 4, 5, 6 ], searchCriterion, true ), [ 1, 3, 5 ], "Satisfying elements present and grep inverted" );
982-
assert.deepEqual( jQuery.grep( [ 1, 3, 5, 7 ], searchCriterion, true ), [ 1, 3, 5, 7 ], "Satisfying elements absent and grep inverted" );
989+
assert.deepEqual(
990+
jQuery.grep( [ 1, 2, 3, 4, 5, 6 ], searchCriterion, true ),
991+
[ 1, 3, 5 ],
992+
"Satisfying elements present and grep inverted"
993+
);
994+
assert.deepEqual(
995+
jQuery.grep( [ 1, 3, 5, 7 ], searchCriterion, true ),
996+
[ 1, 3, 5, 7 ],
997+
"Satisfying elements absent and grep inverted"
998+
);
983999

984-
assert.deepEqual( jQuery.grep( [ 1, 2, 3, 4, 5, 6 ], searchCriterion, false ), [ 2, 4, 6 ], "Satisfying elements present but grep explicitly uninverted" );
985-
assert.deepEqual( jQuery.grep( [ 1, 3, 5, 7 ], searchCriterion, false ), [], "Satisfying elements absent and grep explicitly uninverted" );
1000+
assert.deepEqual(
1001+
jQuery.grep( [ 1, 2, 3, 4, 5, 6 ], searchCriterion, false ),
1002+
[ 2, 4, 6 ],
1003+
"Satisfying elements present but grep explicitly uninverted"
1004+
);
1005+
assert.deepEqual(
1006+
jQuery.grep( [ 1, 3, 5, 7 ], searchCriterion, false ),
1007+
[],
1008+
"Satisfying elements absent and grep explicitly uninverted"
1009+
);
9861010
} );
9871011

1012+
QUnit.test( "jQuery.grep(Array-like)", function( assert ) {
1013+
assert.expect( 7 );
1014+
1015+
var searchCriterion = function( value ) {
1016+
return value % 2 === 0;
1017+
};
1018+
1019+
assert.deepEqual( jQuery.grep( { length: 0 }, searchCriterion ), [], "Empty array-like" );
1020+
1021+
assert.deepEqual(
1022+
jQuery.grep( { 0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, length: 6 }, searchCriterion ),
1023+
[ 2, 4, 6 ],
1024+
"Satisfying elements present and array-like object used"
1025+
);
1026+
assert.deepEqual(
1027+
jQuery.grep( { 0: 1, 1: 3, 2: 5, 3: 7, length: 4 }, searchCriterion ),
1028+
[],
1029+
"Satisfying elements absent and Array-like object used"
1030+
);
1031+
1032+
assert.deepEqual(
1033+
jQuery.grep( { 0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, length: 6 }, searchCriterion, true ),
1034+
[ 1, 3, 5 ],
1035+
"Satisfying elements present, array-like object used, and grep inverted"
1036+
);
1037+
assert.deepEqual(
1038+
jQuery.grep( { 0: 1, 1: 3, 2: 5, 3: 7, length: 4 }, searchCriterion, true ),
1039+
[ 1, 3, 5, 7 ],
1040+
"Satisfying elements absent, array-like object used, and grep inverted"
1041+
);
1042+
1043+
assert.deepEqual(
1044+
jQuery.grep( { 0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, length: 6 }, searchCriterion, false ),
1045+
[ 2, 4, 6 ],
1046+
"Satisfying elements present, Array-like object used, but grep explicitly uninverted"
1047+
);
1048+
assert.deepEqual(
1049+
jQuery.grep( { 0: 1, 1: 3, 2: 5, 3: 7, length: 4 }, searchCriterion, false ),
1050+
[],
1051+
"Satisfying elements absent, Array-like object used, and grep explicitly uninverted"
1052+
);
1053+
});
1054+
9881055
QUnit.test( "jQuery.extend(Object, Object)", function( assert ) {
9891056
assert.expect( 28 );
9901057

0 commit comments

Comments
 (0)