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