OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Flags: --harmony-reflect | 5 // Flags: --harmony-reflect |
6 | 6 |
7 // TODO(neis): Test with proxies. | 7 // TODO(neis): Test with proxies. |
8 | 8 |
9 | 9 |
10 | 10 |
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
237 assertEquals(44, target.nowrite); | 237 assertEquals(44, target.nowrite); |
238 | 238 |
239 assertFalse(Reflect.set(target, "nowrite", value, target)); | 239 assertFalse(Reflect.set(target, "nowrite", value, target)); |
240 assertEquals(44, target.nowrite); | 240 assertEquals(44, target.nowrite); |
241 | 241 |
242 assertFalse(Reflect.set(target, "nowrite", value, receiver)); | 242 assertFalse(Reflect.set(target, "nowrite", value, receiver)); |
243 assertEquals(44, target.nowrite); | 243 assertEquals(44, target.nowrite); |
244 assertFalse("nowrite" in receiver); | 244 assertFalse("nowrite" in receiver); |
245 | 245 |
246 // Data vs Non-Writable | 246 // Data vs Non-Writable |
247 // TODO(neis): This must return false but currently doesn't. | 247 assertFalse(Reflect.set({}, "nowrite", value, target)); |
248 // assertFalse(Reflect.set({}, "nowrite", value, target)); | |
249 | 248 |
250 // Data vs Accessor | 249 // Data vs Accessor |
251 assertFalse(Reflect.set({}, "unknown", 0, {set unknown(x) {}})); | 250 assertFalse(Reflect.set({}, "unknown", 0, {set unknown(x) {}})); |
252 assertFalse(Reflect.set(target, "unknown", value, {set unknown(x) {}})); | 251 assertFalse(Reflect.set(target, "unknown", value, {set unknown(x) {}})); |
253 assertFalse(Reflect.set(target, "bla", value, {set bla(x) {}})); | 252 assertFalse(Reflect.set(target, "bla", value, {set bla(x) {}})); |
254 assertFalse(Reflect.set(target, "bla", value, {get bla() {}})); | 253 assertFalse(Reflect.set(target, "bla", value, {get bla() {}})); |
255 | 254 |
256 // Accessor vs Data | 255 // Accessor vs Data |
257 assertTrue(Reflect.set({set bla(x) {}}), "bla", value, target); | 256 assertTrue(Reflect.set({set bla(x) {}}), "bla", value, target); |
258 assertFalse(Reflect.set({get bla() {}}, "bla", value, target)); | 257 assertFalse(Reflect.set({get bla() {}}, "bla", value, target)); |
259 | 258 |
260 // Data vs Non-Object | 259 // Data vs Non-Object |
261 assertFalse(Reflect.set({}, "bla", value, null)); | 260 assertFalse(Reflect.set({}, "bla", value, null)); |
262 assertFalse(Reflect.set({bla: 42}, "bla", value, null)); | 261 assertFalse(Reflect.set({bla: 42}, "bla", value, null)); |
263 | 262 |
264 // Accessor vs Non-Object | 263 // Accessor vs Non-Object |
265 assertTrue(Reflect.set(target, "setter2", value, null)); | 264 assertTrue(Reflect.set(target, "setter2", value, null)); |
266 assertFalse(Reflect.set(target, "getter", value, null)); | 265 assertFalse(Reflect.set(target, "getter", value, null)); |
| 266 |
| 267 let receiver2 = {bla: true, not_in_target: true}; |
| 268 Object.preventExtensions(receiver2); |
| 269 assertFalse(Reflect.set(target, "bla", value, receiver2)); |
| 270 assertFalse(Reflect.set(target, "bla", true, receiver2)); |
| 271 assertFalse(Reflect.set(target, "not_in_target", value, receiver2)); |
| 272 assertFalse(Reflect.set(target, "not_in_target", true, receiver2)); |
| 273 |
| 274 let receiver3 = {}; |
| 275 Object.defineProperty(receiver3, "bla", |
| 276 {configurable: false, writable: true, value: true}); |
| 277 Object.defineProperty(receiver3, "not_in_target", |
| 278 {configurable: false, writable: true, value: true}); |
| 279 assertTrue(Reflect.set(target, "bla", value, receiver3)); |
| 280 assertTrue(Reflect.set(target, "not_in_target", value, receiver3)); |
267 } | 281 } |
268 })(); | 282 })(); |
269 | 283 |
270 | 284 |
271 | 285 |
272 //////////////////////////////////////////////////////////////////////////////// | 286 //////////////////////////////////////////////////////////////////////////////// |
273 // Reflect.has | 287 // Reflect.has |
274 | 288 |
275 | 289 |
276 (function testReflectHasArity() { | 290 (function testReflectHasArity() { |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
545 assertThrows(function() { Reflect.preventExtensions(); }, TypeError); | 559 assertThrows(function() { Reflect.preventExtensions(); }, TypeError); |
546 assertThrows(function() { Reflect.preventExtensions(42); }, TypeError); | 560 assertThrows(function() { Reflect.preventExtensions(42); }, TypeError); |
547 assertThrows(function() { Reflect.preventExtensions(null); }, TypeError); | 561 assertThrows(function() { Reflect.preventExtensions(null); }, TypeError); |
548 })(); | 562 })(); |
549 | 563 |
550 | 564 |
551 // See reflect-prevent-extensions.js for further tests. | 565 // See reflect-prevent-extensions.js for further tests. |
552 | 566 |
553 // TODO(neis): Need proxies to test the situation where | 567 // TODO(neis): Need proxies to test the situation where |
554 // [[preventExtensions]] returns false. | 568 // [[preventExtensions]] returns false. |
OLD | NEW |