]> source.dussan.org Git - jquery.git/commitdiff
Adds test for jQuery.extend deep copy with array, followed by object. Refutes and...
authorRick Waldron <waldron.rick@gmail.com>
Sun, 3 Feb 2013 17:51:54 +0000 (12:51 -0500)
committerRick Waldron <waldron.rick@gmail.com>
Sun, 3 Feb 2013 17:52:08 +0000 (12:52 -0500)
test/unit/core.js

index 141792110e89cfa8bc7c811308e470261f567f89..3fe3a2301c9c7623eb3abc54e08f10338d7f06e1 100644 (file)
@@ -1019,6 +1019,27 @@ test("jQuery.extend(Object, Object)", function() {
        deepEqual( options2, options2Copy, "Check if not modified: options2 must not be modified" );
 });
 
+test("jQuery.extend(true,{},{a:[], o:{}}); deep copy with array, followed by object", function() {
+       expect(2);
+
+       var result, initial = {
+               // This will make "copyIsArray" true
+               array: [ 1, 2, 3, 4 ],
+               // If "copyIsArray" doesn't get reset to false, the check
+               // will evaluate true and enter the array copy block
+               // instead of the object copy block. Since the ternary in the
+               // "copyIsArray" block will will evaluate to false
+               // (check if operating on an array with ), this will be
+               // replaced by an empty array.
+               object: {}
+       };
+
+       result = jQuery.extend( true, {}, initial );
+
+       deepEqual( result, initial, "The [result] and [initial] have equal shape and values" );
+       ok( !jQuery.isArray( result.object ), "result.object wasn't paved with an empty array" );
+});
+
 test("jQuery.each(Object,Function)", function() {
        expect( 23 );