|
1 /* Test that splice causing deletion of a non-configurable property stops at exactly step 12(v) of ES5 15.4.4.12 */ |
|
2 |
|
3 var O = [1,2,3,4,5,6]; |
|
4 var A = undefined; |
|
5 Object.defineProperty(O, 3, { configurable: false }); |
|
6 |
|
7 try |
|
8 { |
|
9 A = O.splice(0, 6); |
|
10 throw new Error("didn't throw, returned " + A); |
|
11 } |
|
12 catch (e) |
|
13 { |
|
14 assertEq(e instanceof TypeError, true, |
|
15 "deleting O[3] should have caused a TypeError"); |
|
16 } |
|
17 |
|
18 assertEq(O.length, 6); // setting length not reached |
|
19 assertEq(A, undefined); // return value not reached |
|
20 |
|
21 assertEq(O[5], undefined); // deletion reached |
|
22 assertEq(O[4], undefined); // deletion reached |
|
23 assertEq(O[3], 4); // deletion caused exception |
|
24 assertEq(O[2], 3); // deletion not reached |
|
25 assertEq(O[1], 2); // deletion not reached |
|
26 assertEq(O[0], 1); // deletion not reached |