array-splice.js (823B)
1 function test1() { 2 // splice GetElement calls are observable and should be executed even if 3 // the return value of splice is unused. 4 Object.defineProperty(Object.prototype, "0", {get: function() { 5 c++; 6 }, set: function() {}}); 7 var arr = [,,,]; 8 var c = 0; 9 for (var i=0; i<100; i++) { 10 arr.splice(0, 1); 11 arr.length = 1; 12 } 13 14 assertEq(c, 100); 15 } 16 test1(); 17 18 function test2() { 19 var arr = []; 20 for (var i=0; i<100; i++) 21 arr.push(i); 22 for (var i=0; i<40; i++) 23 arr.splice(0, 2); 24 assertEq(arr.length, 20); 25 assertEq(arr[0], undefined); 26 assertEq(arr[1], 81); 27 } 28 test2(); 29 30 function testNonArray() { 31 for (var i=0; i<10; i++) { 32 var o = {splice:[].splice, 0:"a", 1:"b", 2:"c", length:3}; 33 o.splice(0, 2); 34 assertEq(o.length, 1); 35 assertEq(o[0], "c"); 36 } 37 } 38 testNonArray();