js/src/tests/ecma_5/Object/add-property-non-extensible.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:16ad3674de59
1 /*
2 * Any copyright is dedicated to the Public Domain.
3 * http://creativecommons.org/licenses/publicdomain/
4 * Contributor:
5 * Jeff Walden <jwalden+code@mit.edu>
6 */
7
8 var gTestfile = 'add-property-non-extensible.js';
9 //-----------------------------------------------------------------------------
10 var BUGNUMBER = 602144;
11 var summary =
12 'Properly method-compile attempted addition of properties to ' +
13 'non-extensible objects';
14
15 print(BUGNUMBER + ": " + summary);
16
17 /**************
18 * BEGIN TEST *
19 **************/
20
21 // No property
22
23 var o1 = {};
24 for (var i = 0; i < 5; i++)
25 o1.a = 3;
26 assertEq(o1.a, 3);
27
28 var o2 = Object.preventExtensions({});
29 for (var i = 0; i < 5; i++)
30 o2.a = 3;
31 assertEq(Object.getOwnPropertyDescriptor(o2, "a"), undefined);
32
33 var o3 = Object.seal({});
34 for (var i = 0; i < 5; i++)
35 o3.a = 3;
36 assertEq(Object.getOwnPropertyDescriptor(o3, "a"), undefined);
37
38 var o4 = Object.freeze({});
39 for (var i = 0; i < 5; i++)
40 o4.a = 3;
41 assertEq(Object.getOwnPropertyDescriptor(o4, "a"), undefined);
42
43
44 // Has property
45
46 var o5 = { a: 2 };
47 for (var i = 0; i < 5; i++)
48 o5.a = 3;
49 assertEq(o5.a, 3);
50
51 var o6 = Object.preventExtensions({ a: 2 });
52 for (var i = 0; i < 5; i++)
53 o6.a = 3;
54 assertEq(o6.a, 3);
55
56 var o7 = Object.seal({ a: 2 });
57 for (var i = 0; i < 5; i++)
58 o7.a = 3;
59 assertEq(o7.a, 3);
60
61 var o8 = Object.freeze({ a: 2 });
62 for (var i = 0; i < 5; i++)
63 o8.a = 3;
64 assertEq(o8.a, 2);
65
66
67 // Extensible, hit up the prototype chain
68
69 var o9 = Object.create({ a: 2 });
70 for (var i = 0; i < 5; i++)
71 o9.a = 3;
72 assertEq(o9.a, 3);
73
74 var o10 = Object.create(Object.preventExtensions({ a: 2 }));
75 for (var i = 0; i < 5; i++)
76 o10.a = 3;
77 assertEq(o10.a, 3);
78
79 var o11 = Object.create(Object.seal({ a: 2 }));
80 for (var i = 0; i < 5; i++)
81 o11.a = 3;
82 assertEq(o11.a, 3);
83
84 var o12 = Object.create(Object.freeze({ a: 2 }));
85 for (var i = 0; i < 5; i++)
86 o12.a = 3;
87 assertEq(Object.getOwnPropertyDescriptor(o12, "a"), undefined);
88
89
90 // Not extensible, hit up the prototype chain
91
92 var o13 = Object.preventExtensions(Object.create({ a: 2 }));
93 for (var i = 0; i < 5; i++)
94 o13.a = 3;
95 assertEq(Object.getOwnPropertyDescriptor(o13, "a"), undefined);
96
97 var o14 =
98 Object.preventExtensions(Object.create(Object.preventExtensions({ a: 2 })));
99 for (var i = 0; i < 5; i++)
100 o14.a = 3;
101 assertEq(Object.getOwnPropertyDescriptor(o14, "a"), undefined);
102
103 var o15 = Object.preventExtensions(Object.create(Object.seal({ a: 2 })));
104 for (var i = 0; i < 5; i++)
105 o15.a = 3;
106 assertEq(Object.getOwnPropertyDescriptor(o15, "a"), undefined);
107
108 var o16 = Object.preventExtensions(Object.create(Object.freeze({ a: 2 })));
109 for (var i = 0; i < 5; i++)
110 o16.a = 3;
111 assertEq(Object.getOwnPropertyDescriptor(o16, "a"), undefined);
112
113
114 /******************************************************************************/
115
116 reportCompare(true, true);
117
118 print("All tests passed!");

mercurial