non-extensible-elements3.js (1300B)
1 function testAdd() { 2 var a = []; 3 Object.preventExtensions(a); 4 for (var i = 0; i < 20; i++) 5 a[i] = i; 6 assertEq(a.length, 0); 7 8 a = []; 9 Object.seal(a); 10 for (var i = 0; i < 20; i++) 11 a[i] = i; 12 assertEq(a.length, 0); 13 14 a = []; 15 Object.freeze(a); 16 for (var i = 0; i < 20; i++) 17 a[i] = i; 18 assertEq(a.length, 0); 19 } 20 testAdd(); 21 testAdd(); 22 23 function testSet() { 24 var a = [1, 2, 3]; 25 Object.preventExtensions(a); 26 for (var i = 0; i < 20; i++) 27 a[2] = i; 28 assertEq(a.toString(), "1,2,19"); 29 30 a = [1, 2, 3]; 31 Object.seal(a); 32 for (var i = 0; i < 20; i++) 33 a[0] = i; 34 assertEq(a.toString(), "19,2,3"); 35 36 a = [1, 2, 3]; 37 Object.freeze(a); 38 for (var i = 0; i < 20; i++) 39 a[1] = i; 40 assertEq(a.toString(), "1,2,3"); 41 } 42 testSet(); 43 testSet(); 44 45 function testSetHole() { 46 var a = [1, , 3]; 47 Object.preventExtensions(a); 48 for (var i = 0; i < 30; i++) 49 a[1] = i; 50 assertEq(a.toString(), "1,,3"); 51 52 a = [1, , 3]; 53 Object.seal(a); 54 for (var i = 0; i < 30; i++) 55 a[1] = i; 56 assertEq(a.toString(), "1,,3"); 57 58 a = [1, , 3]; 59 Object.freeze(a); 60 for (var i = 0; i < 30; i++) 61 a[1] = i; 62 assertEq(a.toString(), "1,,3"); 63 } 64 testSetHole(); 65 testSetHole();