Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(323)

Side by Side Diff: test/mjsunit/object-seal.js

Issue 6712059: Follow jsc on not throwing when trying to add a property to a non-extensible object. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 68
69 // Make sure we are no longer extensible. 69 // Make sure we are no longer extensible.
70 assertFalse(Object.isExtensible(obj)); 70 assertFalse(Object.isExtensible(obj));
71 assertTrue(Object.isSealed(obj)); 71 assertTrue(Object.isSealed(obj));
72 72
73 // We should not be frozen, since we are still able to 73 // We should not be frozen, since we are still able to
74 // update values. 74 // update values.
75 assertFalse(Object.isFrozen(obj)); 75 assertFalse(Object.isFrozen(obj));
76 76
77 // We should not allow new properties to be added. 77 // We should not allow new properties to be added.
78 try { 78 obj.foo = 42;
79 obj.foo = 42; 79 assertEquals(obj.foo, undefined);
80 assertUnreachable();
81 } catch(e) {
82 assertTrue(/object is not extensible/.test(e));
83 }
84 80
85 desc = Object.getOwnPropertyDescriptor(obj, 'x'); 81 desc = Object.getOwnPropertyDescriptor(obj, 'x');
86 assertTrue(desc.writable); 82 assertTrue(desc.writable);
87 assertFalse(desc.configurable); 83 assertFalse(desc.configurable);
88 assertEquals(42, desc.value); 84 assertEquals(42, desc.value);
89 85
90 desc = Object.getOwnPropertyDescriptor(obj, 'z'); 86 desc = Object.getOwnPropertyDescriptor(obj, 'z');
91 assertTrue(desc.writable); 87 assertTrue(desc.writable);
92 assertFalse(desc.configurable); 88 assertFalse(desc.configurable);
93 assertEquals("foobar", desc.value); 89 assertEquals("foobar", desc.value);
(...skipping 24 matching lines...) Expand all
118 assertTrue(Object.isFrozen(obj2)); 114 assertTrue(Object.isFrozen(obj2));
119 assertFalse(Object.isExtensible(obj2)); 115 assertFalse(Object.isExtensible(obj2));
120 assertTrue(Object.isSealed(obj2)); 116 assertTrue(Object.isSealed(obj2));
121 117
122 desc = Object.getOwnPropertyDescriptor(obj2, 'x'); 118 desc = Object.getOwnPropertyDescriptor(obj2, 'x');
123 assertFalse(desc.configurable); 119 assertFalse(desc.configurable);
124 assertEquals(undefined, desc.value); 120 assertEquals(undefined, desc.value);
125 assertEquals(set, desc.set); 121 assertEquals(set, desc.set);
126 assertEquals(get, desc.get); 122 assertEquals(get, desc.get);
127 123
128 try { 124 obj2.foo = 42;
129 obj2.foo = 42; 125 assertEquals(obj2.foo, undefined);
130 assertUnreachable();
131 } catch(e) {
132 assertTrue(/object is not extensible/.test(e));
133 }
134
135 126
136 // Test seal on arrays. 127 // Test seal on arrays.
137 var arr = new Array(42,43); 128 var arr = new Array(42,43);
138 129
139 desc = Object.getOwnPropertyDescriptor(arr, '0'); 130 desc = Object.getOwnPropertyDescriptor(arr, '0');
140 assertTrue(desc.configurable); 131 assertTrue(desc.configurable);
141 assertTrue(desc.writable); 132 assertTrue(desc.writable);
142 assertEquals(42, desc.value); 133 assertEquals(42, desc.value);
143 134
144 desc = Object.getOwnPropertyDescriptor(arr, '1'); 135 desc = Object.getOwnPropertyDescriptor(arr, '1');
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 var obj4 = {}; 181 var obj4 = {};
191 Object.defineProperty(obj4, 'x', {configurable: true, writable: false}); 182 Object.defineProperty(obj4, 'x', {configurable: true, writable: false});
192 Object.defineProperty(obj4, 'y', {configurable: false, writable: false}); 183 Object.defineProperty(obj4, 'y', {configurable: false, writable: false});
193 Object.preventExtensions(obj4); 184 Object.preventExtensions(obj4);
194 185
195 assertFalse(Object.isSealed(obj4)); 186 assertFalse(Object.isSealed(obj4));
196 187
197 // Make sure that Object.seal returns the sealed object. 188 // Make sure that Object.seal returns the sealed object.
198 var obj4 = {} 189 var obj4 = {}
199 assertTrue(obj4 === Object.seal(obj4)) 190 assertTrue(obj4 === Object.seal(obj4))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698