non-extensible-elements1.js (1860B)
1 function testTestIntegrityLevel(a, hasElems) { 2 assertEq(Object.isExtensible(a), true); 3 assertEq(Object.isSealed(a), false); 4 assertEq(Object.isFrozen(a), false); 5 6 Object.preventExtensions(a); 7 assertEq(Object.isExtensible(a), false); 8 assertEq(Object.isSealed(a), !hasElems); 9 assertEq(Object.isFrozen(a), false); 10 11 Object.seal(a); 12 assertEq(Object.isExtensible(a), false); 13 assertEq(Object.isSealed(a), true); 14 assertEq(Object.isFrozen(a), false); 15 16 Object.freeze(a); 17 assertEq(Object.isExtensible(a), false); 18 assertEq(Object.isSealed(a), true); 19 assertEq(Object.isFrozen(a), true); 20 } 21 testTestIntegrityLevel([1, 2, 3], true); 22 testTestIntegrityLevel([1, , , 2], true); 23 testTestIntegrityLevel([1, , , ], true); 24 testTestIntegrityLevel([, , , ], false); 25 testTestIntegrityLevel([], false); 26 testTestIntegrityLevel({0: 0}, true); 27 var a = [,,,,,,, 1]; 28 a.pop(); 29 testTestIntegrityLevel(a, false); 30 31 function testDescriptor() { 32 var a = [1]; 33 Object.preventExtensions(a); 34 assertEq(JSON.stringify(Object.getOwnPropertyDescriptors(a)), 35 `{"0":{"value":1,"writable":true,"enumerable":true,"configurable":true},` + 36 `"length":{"value":1,"writable":true,"enumerable":false,"configurable":false}}`); 37 38 a = [1]; 39 Object.seal(a); 40 assertEq(JSON.stringify(Object.getOwnPropertyDescriptors(a)), 41 `{"0":{"value":1,"writable":true,"enumerable":true,"configurable":false},` + 42 `"length":{"value":1,"writable":true,"enumerable":false,"configurable":false}}`); 43 44 a = [1]; 45 Object.freeze(a); 46 assertEq(JSON.stringify(Object.getOwnPropertyDescriptors(a)), 47 `{"0":{"value":1,"writable":false,"enumerable":true,"configurable":false},` + 48 `"length":{"value":1,"writable":false,"enumerable":false,"configurable":false}}`); 49 } 50 testDescriptor();