Chromium Code Reviews| Index: test/mjsunit/harmony/reflect.js |
| diff --git a/test/mjsunit/harmony/reflect.js b/test/mjsunit/harmony/reflect.js |
| index d9cd51f649d6d8c8f75b723658ade0f4f304de11..61481d658b493dd738303b64bd858ee7e6e47105 100644 |
| --- a/test/mjsunit/harmony/reflect.js |
| +++ b/test/mjsunit/harmony/reflect.js |
| @@ -2,7 +2,7 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -// Flags: --harmony-reflect |
| +// Flags: --harmony-reflect --harmony-sloppy-let |
| // TODO(neis): Test with proxies. |
| @@ -12,8 +12,6 @@ |
| // (Auxiliaries) |
| -"use strict"; |
|
rossberg
2015/10/08 12:36:34
Why drop this? The language mode shouldn't affect
|
| - |
| var global = this; |
| var sym = Symbol("gaga"); |
| @@ -53,6 +51,10 @@ function prepare(tgt) { |
| tgt[sym] = "foo"; |
| tgt["noconf"] = 43; |
| Object.defineProperty(tgt, "noconf", {configurable: false}); |
| + Object.defineProperty(tgt, "getter", |
| + { get: function () {return this.bla}, configurable: true }); |
| + Object.defineProperty(tgt, "setter", |
| + { set: function () {}, configurable: true }); |
| } |
| @@ -83,14 +85,43 @@ function prepare(tgt) { |
| (function testReflectGetOnObject() { |
| + var receiver = {bla: false}; |
| for (let tgt of objects) { |
| prepare(tgt); |
| assertEquals(true, Reflect.get(tgt, "bla")); |
| + assertEquals(true, Reflect.get(tgt, "bla", tgt)); |
| + assertEquals(true, Reflect.get(tgt, "bla", receiver)); |
| assertEquals(42, Reflect.get(tgt, 4)); |
| + assertEquals(42, Reflect.get(tgt, 4, tgt)); |
| + assertEquals(42, Reflect.get(tgt, 4, receiver)); |
| assertEquals(42, Reflect.get(tgt, "4")); |
| + assertEquals(42, Reflect.get(tgt, "4", tgt)); |
| + assertEquals(42, Reflect.get(tgt, "4", receiver)); |
| assertEquals("foo", Reflect.get(tgt, sym)); |
| - assertEquals(undefined, Reflect.get(tgt, "doesnotexist")); |
| + assertEquals("foo", Reflect.get(tgt, sym, tgt)); |
| + assertEquals("foo", Reflect.get(tgt, sym, receiver)); |
| + assertEquals(43, Reflect.get(tgt, "noconf")); |
| + assertEquals(43, Reflect.get(tgt, "noconf", tgt)); |
| + assertEquals(43, Reflect.get(tgt, "noconf", receiver)); |
| + assertEquals(true, Reflect.get(tgt, "getter")); |
| + assertEquals(true, Reflect.get(tgt, "getter", tgt)); |
| + assertEquals(false, Reflect.get(tgt, "getter", receiver)); |
| + assertEquals(undefined, Reflect.get(tgt, "setter")); |
| + assertEquals(undefined, Reflect.get(tgt, "setter", tgt)); |
| + assertEquals(undefined, Reflect.get(tgt, "setter", receiver)); |
| + assertEquals(undefined, Reflect.get(tgt, "foo")); |
| + assertEquals(undefined, Reflect.get(tgt, "foo", tgt)); |
| + assertEquals(undefined, Reflect.get(tgt, "foo", receiver)); |
| assertEquals(undefined, Reflect.get(tgt, 666)); |
| + assertEquals(undefined, Reflect.get(tgt, 666, tgt)); |
| + assertEquals(undefined, Reflect.get(tgt, 666, receiver)); |
| + |
| + let proto = tgt.__proto__; |
| + tgt.__proto__ = { get foo() {return this.bla} }; |
| + assertEquals(true, Reflect.get(tgt, "foo")); |
| + assertEquals(true, Reflect.get(tgt, "foo", tgt)); |
| + assertEquals(false, Reflect.get(tgt, "foo", receiver)); |
| + tgt.__proto__ = proto; |
| } |
| })(); |
| @@ -128,8 +159,16 @@ function prepare(tgt) { |
| assertTrue(Reflect.has(tgt, 4)); |
| assertTrue(Reflect.has(tgt, "4")); |
| assertTrue(Reflect.has(tgt, sym)); |
| - assertFalse(Reflect.has(tgt, "doesnotexist")); |
| + assertTrue(Reflect.has(tgt, "noconf")); |
| + assertTrue(Reflect.has(tgt, "getter")); |
| + assertTrue(Reflect.has(tgt, "setter")); |
| + assertFalse(Reflect.has(tgt, "foo")); |
| assertFalse(Reflect.has(tgt, 666)); |
| + |
| + let proto = tgt.__proto__; |
| + tgt.__proto__ = { get foo() {return this.bla} }; |
| + assertEquals(true, Reflect.has(tgt, "foo")); |
| + tgt.__proto__ = proto; |
| } |
| })(); |
| @@ -173,10 +212,17 @@ function prepare(tgt) { |
| } |
| assertTrue(Reflect.deleteProperty(tgt, sym)); |
| assertEquals(undefined, Object.getOwnPropertyDescriptor(tgt, sym)); |
| - assertTrue(Reflect.deleteProperty(tgt, "doesnotexist")); |
| - assertTrue(Reflect.deleteProperty(tgt, 666)); |
| assertFalse(Reflect.deleteProperty(tgt, "noconf")); |
| assertEquals(43, tgt.noconf); |
| + assertTrue(Reflect.deleteProperty(tgt, "getter")); |
| + assertTrue(Reflect.deleteProperty(tgt, "setter")); |
| + assertTrue(Reflect.deleteProperty(tgt, "foo")); |
| + assertTrue(Reflect.deleteProperty(tgt, 666)); |
| + |
| + let proto = tgt.__proto__; |
| + tgt.__proto__ = { get foo() {return this.bla} }; |
| + assertEquals(true, Reflect.deleteProperty(tgt, "foo")); |
| + tgt.__proto__ = proto; |
| } |
| })(); |