non-extensible-elements7.js (1109B)
1 // Test array.length setter on non-extensible/sealed/frozen arrays. 2 "use strict"; 3 4 load(libdir + "asserts.js"); 5 6 function testNonExtensible() { 7 var a = [1, 2, 3, , ,]; 8 Object.preventExtensions(a); 9 for (var i = 0; i < 10; i++) 10 a.length = 10; 11 assertEq(a.length, 10); 12 for (var i = 0; i < 10; i++) 13 a.length = 0; 14 assertEq(a.length, 0); 15 assertEq(a.toString(), ""); 16 } 17 testNonExtensible(); 18 19 function testSealed() { 20 var a = [1, 2, 3, , ,]; 21 Object.seal(a); 22 for (var i = 0; i < 10; i++) 23 a.length = 10; 24 assertEq(a.length, 10); 25 for (var i = 0; i < 10; i++) 26 assertThrowsInstanceOf(() => a.length = 0, TypeError); 27 assertEq(a.length, 3); 28 assertEq(a.toString(), "1,2,3"); 29 } 30 testSealed(); 31 32 function testFrozen() { 33 var a = [1, 2, 3, , ,]; 34 Object.freeze(a); 35 for (var i = 0; i < 10; i++) 36 assertThrowsInstanceOf(() => a.length = 10, TypeError); 37 for (var i = 0; i < 10; i++) 38 assertThrowsInstanceOf(() => a.length = 0, TypeError); 39 assertEq(a.length, 5); 40 assertEq(a.toString(), "1,2,3,,"); 41 } 42 testFrozen();