shifted-elements5.js (898B)
1 function testFreeze() { 2 var arr = []; 3 for (var i = 0; i < 20; i++) 4 arr.push(i); 5 for (var i = 0; i < 10; i++) 6 arr.shift(); 7 Object.freeze(arr); 8 assertEq(arr.length, 10); 9 arr[0] = -1; 10 assertEq(arr[0], 10); 11 } 12 testFreeze(); 13 testFreeze(); 14 15 function testCopyOnWrite() { 16 var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; 17 for (var i = 0; i < 5; i++) 18 assertEq(arr.shift(), i + 1); 19 assertEq(arr.toString(), "6,7,8,9"); 20 } 21 testCopyOnWrite(); 22 testCopyOnWrite(); 23 24 function testNonWritableLength() { 25 var arr = []; 26 for (var i = 0; i < 20; i++) 27 arr.push(i); 28 Object.defineProperty(arr, "length", {writable: false, value: arr.length}); 29 var ex; 30 try { 31 arr.shift(); 32 } catch(e) { 33 ex = e; 34 } 35 assertEq(ex instanceof TypeError, true); 36 assertEq(arr.length, 20); 37 } 38 testNonWritableLength(); 39 testNonWritableLength();