| 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 |