| 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 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 assertThrows(function() { Reflect.get(42, "bla"); }, TypeError); | 80 assertThrows(function() { Reflect.get(42, "bla"); }, TypeError); |
| 81 assertThrows(function() { Reflect.get(null, "bla"); }, TypeError); | 81 assertThrows(function() { Reflect.get(null, "bla"); }, TypeError); |
| 82 })(); | 82 })(); |
| 83 | 83 |
| 84 | 84 |
| 85 (function testReflectGetKeyConversion() { | 85 (function testReflectGetKeyConversion() { |
| 86 var target = {bla: 42}; | 86 var target = {bla: 42}; |
| 87 var a = { [Symbol.toPrimitive]: function() { return "bla" } }; | 87 var a = { [Symbol.toPrimitive]: function() { return "bla" } }; |
| 88 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; | 88 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; |
| 89 assertEquals(42, Reflect.get(target, a)); | 89 assertEquals(42, Reflect.get(target, a)); |
| 90 assertThrows(function() { Reflect.get(target, b); }, "gaga"); | 90 assertThrowsEquals(function() { Reflect.get(target, b); }, "gaga"); |
| 91 })(); | 91 })(); |
| 92 | 92 |
| 93 | 93 |
| 94 (function testReflectGetOnObject() { | 94 (function testReflectGetOnObject() { |
| 95 var receiver = {bla: false}; | 95 var receiver = {bla: false}; |
| 96 for (let target of objects) { | 96 for (let target of objects) { |
| 97 prepare(target); | 97 prepare(target); |
| 98 assertEquals(true, Reflect.get(target, "bla")); | 98 assertEquals(true, Reflect.get(target, "bla")); |
| 99 assertEquals(true, Reflect.get(target, "bla", target)); | 99 assertEquals(true, Reflect.get(target, "bla", target)); |
| 100 assertEquals(true, Reflect.get(target, "bla", receiver)); | 100 assertEquals(true, Reflect.get(target, "bla", receiver)); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 assertThrows(function() { Reflect.set(null, "bla"); }, TypeError); | 149 assertThrows(function() { Reflect.set(null, "bla"); }, TypeError); |
| 150 })(); | 150 })(); |
| 151 | 151 |
| 152 | 152 |
| 153 (function testReflectSetKeyConversion() { | 153 (function testReflectSetKeyConversion() { |
| 154 var target = {}; | 154 var target = {}; |
| 155 var a = { [Symbol.toPrimitive]: function() { return "bla" } }; | 155 var a = { [Symbol.toPrimitive]: function() { return "bla" } }; |
| 156 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; | 156 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; |
| 157 assertTrue(Reflect.set(target, a, 42)); | 157 assertTrue(Reflect.set(target, a, 42)); |
| 158 assertEquals(42, target.bla); | 158 assertEquals(42, target.bla); |
| 159 assertThrows(function() { Reflect.set(target, b, 42); }, "gaga"); | 159 assertThrowsEquals(function() { Reflect.set(target, b, 42); }, "gaga"); |
| 160 })(); | 160 })(); |
| 161 | 161 |
| 162 | 162 |
| 163 (function testReflectSetOnObject() { | 163 (function testReflectSetOnObject() { |
| 164 var receiver = {bla: false}; | 164 var receiver = {bla: false}; |
| 165 var value = 34234; | 165 var value = 34234; |
| 166 for (let target of objects) { | 166 for (let target of objects) { |
| 167 prepare(target); | 167 prepare(target); |
| 168 assertTrue(Reflect.set(target, "bla", value)); | 168 assertTrue(Reflect.set(target, "bla", value)); |
| 169 assertEquals(value, target.bla); | 169 assertEquals(value, target.bla); |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 290 assertThrows(function() { Reflect.has(42, "bla"); }, TypeError); | 290 assertThrows(function() { Reflect.has(42, "bla"); }, TypeError); |
| 291 assertThrows(function() { Reflect.has(null, "bla"); }, TypeError); | 291 assertThrows(function() { Reflect.has(null, "bla"); }, TypeError); |
| 292 })(); | 292 })(); |
| 293 | 293 |
| 294 | 294 |
| 295 (function testReflectHasKeyConversion() { | 295 (function testReflectHasKeyConversion() { |
| 296 var target = {bla: 42}; | 296 var target = {bla: 42}; |
| 297 var a = { [Symbol.toPrimitive]: function() { return "bla" } }; | 297 var a = { [Symbol.toPrimitive]: function() { return "bla" } }; |
| 298 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; | 298 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; |
| 299 assertTrue(Reflect.has(target, a)); | 299 assertTrue(Reflect.has(target, a)); |
| 300 assertThrows(function() { Reflect.has(target, b); }, "gaga"); | 300 assertThrowsEquals(function() { Reflect.has(target, b); }, "gaga"); |
| 301 })(); | 301 })(); |
| 302 | 302 |
| 303 | 303 |
| 304 (function testReflectHasOnObject() { | 304 (function testReflectHasOnObject() { |
| 305 for (let target of objects) { | 305 for (let target of objects) { |
| 306 prepare(target); | 306 prepare(target); |
| 307 assertTrue(Reflect.has(target, "bla")); | 307 assertTrue(Reflect.has(target, "bla")); |
| 308 assertTrue(Reflect.has(target, 4)); | 308 assertTrue(Reflect.has(target, 4)); |
| 309 assertTrue(Reflect.has(target, "4")); | 309 assertTrue(Reflect.has(target, "4")); |
| 310 assertTrue(Reflect.has(target, sym)); | 310 assertTrue(Reflect.has(target, sym)); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 TypeError); | 343 TypeError); |
| 344 })(); | 344 })(); |
| 345 | 345 |
| 346 | 346 |
| 347 (function testReflectDefinePropertyKeyConversion() { | 347 (function testReflectDefinePropertyKeyConversion() { |
| 348 var target = {}; | 348 var target = {}; |
| 349 var a = { [Symbol.toPrimitive]: function() { return "bla" } }; | 349 var a = { [Symbol.toPrimitive]: function() { return "bla" } }; |
| 350 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; | 350 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; |
| 351 assertTrue(Reflect.defineProperty(target, a, {value: 42})); | 351 assertTrue(Reflect.defineProperty(target, a, {value: 42})); |
| 352 assertEquals(target.bla, 42); | 352 assertEquals(target.bla, 42); |
| 353 assertThrows(function() { Reflect.defineProperty(target, b); }, "gaga"); | 353 assertThrowsEquals(function() { Reflect.defineProperty(target, b); }, "gaga"); |
| 354 })(); | 354 })(); |
| 355 | 355 |
| 356 | 356 |
| 357 // See reflect-define-property.js for further tests. | 357 // See reflect-define-property.js for further tests. |
| 358 | 358 |
| 359 | 359 |
| 360 | 360 |
| 361 //////////////////////////////////////////////////////////////////////////////// | 361 //////////////////////////////////////////////////////////////////////////////// |
| 362 // Reflect.deleteProperty | 362 // Reflect.deleteProperty |
| 363 | 363 |
| 364 | 364 |
| 365 (function testReflectDeletePropertyArity() { | 365 (function testReflectDeletePropertyArity() { |
| 366 assertEquals(2, Reflect.deleteProperty.length); | 366 assertEquals(2, Reflect.deleteProperty.length); |
| 367 })(); | 367 })(); |
| 368 | 368 |
| 369 | 369 |
| 370 (function testReflectDeletePropertyOnNonObject() { | 370 (function testReflectDeletePropertyOnNonObject() { |
| 371 assertThrows(function() { Reflect.deleteProperty(); }, TypeError); | 371 assertThrows(function() { Reflect.deleteProperty(); }, TypeError); |
| 372 assertThrows(function() { Reflect.deleteProperty(42, "bla"); }, TypeError); | 372 assertThrows(function() { Reflect.deleteProperty(42, "bla"); }, TypeError); |
| 373 assertThrows(function() { Reflect.deleteProperty(null, "bla"); }, TypeError); | 373 assertThrows(function() { Reflect.deleteProperty(null, "bla"); }, TypeError); |
| 374 })(); | 374 })(); |
| 375 | 375 |
| 376 | 376 |
| 377 (function testReflectDeletePropertyKeyConversion() { | 377 (function testReflectDeletePropertyKeyConversion() { |
| 378 var target = {bla: 42}; | 378 var target = {bla: 42}; |
| 379 var a = { [Symbol.toPrimitive]: function() { return "bla" } }; | 379 var a = { [Symbol.toPrimitive]: function() { return "bla" } }; |
| 380 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; | 380 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; |
| 381 assertTrue(Reflect.deleteProperty(target, a)); | 381 assertTrue(Reflect.deleteProperty(target, a)); |
| 382 assertThrows(function() { Reflect.deleteProperty(target, b); }, "gaga"); | 382 assertThrowsEquals(function() { Reflect.deleteProperty(target, b); }, "gaga"); |
| 383 })(); | 383 })(); |
| 384 | 384 |
| 385 | 385 |
| 386 (function testReflectDeletePropertyOnObject() { | 386 (function testReflectDeletePropertyOnObject() { |
| 387 for (let target of objects) { | 387 for (let target of objects) { |
| 388 prepare(target); | 388 prepare(target); |
| 389 assertTrue(Reflect.deleteProperty(target, "bla")); | 389 assertTrue(Reflect.deleteProperty(target, "bla")); |
| 390 assertEquals(undefined, Object.getOwnPropertyDescriptor(target, "bla")); | 390 assertEquals(undefined, Object.getOwnPropertyDescriptor(target, "bla")); |
| 391 if (target instanceof Int32Array) { | 391 if (target instanceof Int32Array) { |
| 392 assertFalse(Reflect.deleteProperty(target, 4)); | 392 assertFalse(Reflect.deleteProperty(target, 4)); |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 523 assertThrows(function() { Reflect.getOwnPropertyDescriptor(null); }, | 523 assertThrows(function() { Reflect.getOwnPropertyDescriptor(null); }, |
| 524 TypeError); | 524 TypeError); |
| 525 })(); | 525 })(); |
| 526 | 526 |
| 527 | 527 |
| 528 (function testReflectGetOwnPropertyDescriptorKeyConversion() { | 528 (function testReflectGetOwnPropertyDescriptorKeyConversion() { |
| 529 var target = {bla: 42}; | 529 var target = {bla: 42}; |
| 530 var a = { [Symbol.toPrimitive]: function() { return "bla" } }; | 530 var a = { [Symbol.toPrimitive]: function() { return "bla" } }; |
| 531 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; | 531 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; |
| 532 assertEquals(42, Reflect.getOwnPropertyDescriptor(target, a).value); | 532 assertEquals(42, Reflect.getOwnPropertyDescriptor(target, a).value); |
| 533 assertThrows(function() { Reflect.getOwnPropertyDescriptor(target, b); }, | 533 assertThrowsEquals(() => Reflect.getOwnPropertyDescriptor(target, b), "gaga"); |
| 534 "gaga"); | |
| 535 })(); | 534 })(); |
| 536 | 535 |
| 537 | 536 |
| 538 // See reflect-get-own-property-descriptor.js for further tests. | 537 // See reflect-get-own-property-descriptor.js for further tests. |
| 539 | 538 |
| 540 | 539 |
| 541 | 540 |
| 542 //////////////////////////////////////////////////////////////////////////////// | 541 //////////////////////////////////////////////////////////////////////////////// |
| 543 // Reflect.ownKeys | 542 // Reflect.ownKeys |
| 544 | 543 |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 585 assertThrows(function() { Reflect.preventExtensions(); }, TypeError); | 584 assertThrows(function() { Reflect.preventExtensions(); }, TypeError); |
| 586 assertThrows(function() { Reflect.preventExtensions(42); }, TypeError); | 585 assertThrows(function() { Reflect.preventExtensions(42); }, TypeError); |
| 587 assertThrows(function() { Reflect.preventExtensions(null); }, TypeError); | 586 assertThrows(function() { Reflect.preventExtensions(null); }, TypeError); |
| 588 })(); | 587 })(); |
| 589 | 588 |
| 590 | 589 |
| 591 // See reflect-prevent-extensions.js for further tests. | 590 // See reflect-prevent-extensions.js for further tests. |
| 592 | 591 |
| 593 // TODO(neis): Need proxies to test the situation where | 592 // TODO(neis): Need proxies to test the situation where |
| 594 // [[preventExtensions]] returns false. | 593 // [[preventExtensions]] returns false. |
| OLD | NEW |