packed-arrays.js (1279B)
1 var isPacked = getSelfHostedValue("IsPackedArray"); 2 3 function test() { 4 var arr; 5 6 // basic 7 arr = []; 8 assertEq(isPacked(arr), true); 9 arr[0] = 0; 10 assertEq(isPacked(arr), true); 11 arr[2] = 2; 12 assertEq(isPacked(arr), false); 13 14 // delete 15 arr = [1, 2, 3]; 16 assertEq(isPacked(arr), true); 17 delete arr[1]; 18 assertEq(isPacked(arr), false); 19 20 // setting .length 21 arr = [1]; 22 arr.length = 0; 23 assertEq(isPacked(arr), true); 24 arr.length = 1; 25 assertEq(isPacked(arr), false); 26 27 // slice 28 arr = [1, 2, , 3]; 29 assertEq(isPacked(arr), false); 30 assertEq(isPacked(arr.slice(0, 2)), true); 31 assertEq(isPacked(arr.slice(0, 3)), false); 32 assertEq(isPacked(arr.slice(2, 3)), false); 33 assertEq(isPacked(arr.slice(3, 4)), true); 34 35 // splice 36 arr = [1, 2, 3]; 37 assertEq(isPacked(arr.splice(0)), true); 38 arr = [1, , 2]; 39 assertEq(isPacked(arr.splice(0)), false); 40 arr = [1, , 2]; 41 assertEq(isPacked(arr.splice(0, 1)), true); 42 assertEq(arr.length, 2); 43 assertEq(isPacked(arr.splice(0, 1)), false); 44 assertEq(arr.length, 1); 45 assertEq(isPacked(arr.splice(0, 1)), true); 46 assertEq(arr.length, 0); 47 assertEq(isPacked(arr.splice(0)), true); 48 } 49 for (var i = 0; i < 5; i++) { 50 test(); 51 }