Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(114)

Side by Side Diff: test/mjsunit/harmony/reflect.js

Issue 1392203002: [es6] Support optional "receiver" argument in Reflect.get. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Be strict again. Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/objects-inl.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 RegExp, 46 RegExp,
47 global 47 global
48 ]; 48 ];
49 49
50 function prepare(tgt) { 50 function prepare(tgt) {
51 tgt["bla"] = true; 51 tgt["bla"] = true;
52 tgt[4] = 42; 52 tgt[4] = 42;
53 tgt[sym] = "foo"; 53 tgt[sym] = "foo";
54 tgt["noconf"] = 43; 54 tgt["noconf"] = 43;
55 Object.defineProperty(tgt, "noconf", {configurable: false}); 55 Object.defineProperty(tgt, "noconf", {configurable: false});
56 Object.defineProperty(tgt, "getter",
57 { get: function () {return this.bla}, configurable: true });
58 Object.defineProperty(tgt, "setter",
59 { set: function () {}, configurable: true });
56 } 60 }
57 61
58 62
59 63
60 //////////////////////////////////////////////////////////////////////////////// 64 ////////////////////////////////////////////////////////////////////////////////
61 // Reflect.get 65 // Reflect.get
62 66
63 67
64 (function testReflectGetArity() { 68 (function testReflectGetArity() {
65 assertEquals(3, Reflect.get.length); 69 assertEquals(3, Reflect.get.length);
(...skipping 10 matching lines...) Expand all
76 (function testReflectGetKeyConversion() { 80 (function testReflectGetKeyConversion() {
77 var tgt = {bla: 42}; 81 var tgt = {bla: 42};
78 var a = { [Symbol.toPrimitive]: function() { return "bla" } }; 82 var a = { [Symbol.toPrimitive]: function() { return "bla" } };
79 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } }; 83 var b = { [Symbol.toPrimitive]: function() { throw "gaga" } };
80 assertEquals(42, Reflect.get(tgt, a)); 84 assertEquals(42, Reflect.get(tgt, a));
81 assertThrows(function() { Reflect.get(tgt, b); }, "gaga"); 85 assertThrows(function() { Reflect.get(tgt, b); }, "gaga");
82 })(); 86 })();
83 87
84 88
85 (function testReflectGetOnObject() { 89 (function testReflectGetOnObject() {
90 var receiver = {bla: false};
86 for (let tgt of objects) { 91 for (let tgt of objects) {
87 prepare(tgt); 92 prepare(tgt);
88 assertEquals(true, Reflect.get(tgt, "bla")); 93 assertEquals(true, Reflect.get(tgt, "bla"));
94 assertEquals(true, Reflect.get(tgt, "bla", tgt));
95 assertEquals(true, Reflect.get(tgt, "bla", receiver));
89 assertEquals(42, Reflect.get(tgt, 4)); 96 assertEquals(42, Reflect.get(tgt, 4));
97 assertEquals(42, Reflect.get(tgt, 4, tgt));
98 assertEquals(42, Reflect.get(tgt, 4, receiver));
90 assertEquals(42, Reflect.get(tgt, "4")); 99 assertEquals(42, Reflect.get(tgt, "4"));
100 assertEquals(42, Reflect.get(tgt, "4", tgt));
101 assertEquals(42, Reflect.get(tgt, "4", receiver));
91 assertEquals("foo", Reflect.get(tgt, sym)); 102 assertEquals("foo", Reflect.get(tgt, sym));
92 assertEquals(undefined, Reflect.get(tgt, "doesnotexist")); 103 assertEquals("foo", Reflect.get(tgt, sym, tgt));
104 assertEquals("foo", Reflect.get(tgt, sym, receiver));
105 assertEquals(43, Reflect.get(tgt, "noconf"));
106 assertEquals(43, Reflect.get(tgt, "noconf", tgt));
107 assertEquals(43, Reflect.get(tgt, "noconf", receiver));
108 assertEquals(true, Reflect.get(tgt, "getter"));
109 assertEquals(true, Reflect.get(tgt, "getter", tgt));
110 assertEquals(false, Reflect.get(tgt, "getter", receiver));
111 assertEquals(undefined, Reflect.get(tgt, "setter"));
112 assertEquals(undefined, Reflect.get(tgt, "setter", tgt));
113 assertEquals(undefined, Reflect.get(tgt, "setter", receiver));
114 assertEquals(undefined, Reflect.get(tgt, "foo"));
115 assertEquals(undefined, Reflect.get(tgt, "foo", tgt));
116 assertEquals(undefined, Reflect.get(tgt, "foo", receiver));
93 assertEquals(undefined, Reflect.get(tgt, 666)); 117 assertEquals(undefined, Reflect.get(tgt, 666));
118 assertEquals(undefined, Reflect.get(tgt, 666, tgt));
119 assertEquals(undefined, Reflect.get(tgt, 666, receiver));
120
121 let proto = tgt.__proto__;
122 tgt.__proto__ = { get foo() {return this.bla} };
123 assertEquals(true, Reflect.get(tgt, "foo"));
124 assertEquals(true, Reflect.get(tgt, "foo", tgt));
125 assertEquals(false, Reflect.get(tgt, "foo", receiver));
126 tgt.__proto__ = proto;
94 } 127 }
95 })(); 128 })();
96 129
97 130
98 131
99 //////////////////////////////////////////////////////////////////////////////// 132 ////////////////////////////////////////////////////////////////////////////////
100 // Reflect.has 133 // Reflect.has
101 134
102 135
103 (function testReflectHasArity() { 136 (function testReflectHasArity() {
(...skipping 17 matching lines...) Expand all
121 })(); 154 })();
122 155
123 156
124 (function testReflectHasOnObject() { 157 (function testReflectHasOnObject() {
125 for (let tgt of objects) { 158 for (let tgt of objects) {
126 prepare(tgt); 159 prepare(tgt);
127 assertTrue(Reflect.has(tgt, "bla")); 160 assertTrue(Reflect.has(tgt, "bla"));
128 assertTrue(Reflect.has(tgt, 4)); 161 assertTrue(Reflect.has(tgt, 4));
129 assertTrue(Reflect.has(tgt, "4")); 162 assertTrue(Reflect.has(tgt, "4"));
130 assertTrue(Reflect.has(tgt, sym)); 163 assertTrue(Reflect.has(tgt, sym));
131 assertFalse(Reflect.has(tgt, "doesnotexist")); 164 assertTrue(Reflect.has(tgt, "noconf"));
165 assertTrue(Reflect.has(tgt, "getter"));
166 assertTrue(Reflect.has(tgt, "setter"));
167 assertFalse(Reflect.has(tgt, "foo"));
132 assertFalse(Reflect.has(tgt, 666)); 168 assertFalse(Reflect.has(tgt, 666));
169
170 let proto = tgt.__proto__;
171 tgt.__proto__ = { get foo() {return this.bla} };
172 assertEquals(true, Reflect.has(tgt, "foo"));
173 tgt.__proto__ = proto;
133 } 174 }
134 })(); 175 })();
135 176
136 177
137 178
138 //////////////////////////////////////////////////////////////////////////////// 179 ////////////////////////////////////////////////////////////////////////////////
139 // Reflect.deleteProperty 180 // Reflect.deleteProperty
140 181
141 182
142 (function testReflectDeletePropertyArity() { 183 (function testReflectDeletePropertyArity() {
(...skipping 23 matching lines...) Expand all
166 assertTrue(Reflect.deleteProperty(tgt, "bla")); 207 assertTrue(Reflect.deleteProperty(tgt, "bla"));
167 assertEquals(undefined, Object.getOwnPropertyDescriptor(tgt, "bla")); 208 assertEquals(undefined, Object.getOwnPropertyDescriptor(tgt, "bla"));
168 if (tgt instanceof Int32Array) { 209 if (tgt instanceof Int32Array) {
169 assertFalse(Reflect.deleteProperty(tgt, 4)); 210 assertFalse(Reflect.deleteProperty(tgt, 4));
170 } else { 211 } else {
171 assertTrue(Reflect.deleteProperty(tgt, 4)); 212 assertTrue(Reflect.deleteProperty(tgt, 4));
172 assertEquals(undefined, Object.getOwnPropertyDescriptor(tgt, 4)); 213 assertEquals(undefined, Object.getOwnPropertyDescriptor(tgt, 4));
173 } 214 }
174 assertTrue(Reflect.deleteProperty(tgt, sym)); 215 assertTrue(Reflect.deleteProperty(tgt, sym));
175 assertEquals(undefined, Object.getOwnPropertyDescriptor(tgt, sym)); 216 assertEquals(undefined, Object.getOwnPropertyDescriptor(tgt, sym));
176 assertTrue(Reflect.deleteProperty(tgt, "doesnotexist"));
177 assertTrue(Reflect.deleteProperty(tgt, 666));
178 assertFalse(Reflect.deleteProperty(tgt, "noconf")); 217 assertFalse(Reflect.deleteProperty(tgt, "noconf"));
179 assertEquals(43, tgt.noconf); 218 assertEquals(43, tgt.noconf);
219 assertTrue(Reflect.deleteProperty(tgt, "getter"));
220 assertTrue(Reflect.deleteProperty(tgt, "setter"));
221 assertTrue(Reflect.deleteProperty(tgt, "foo"));
222 assertTrue(Reflect.deleteProperty(tgt, 666));
223
224 let proto = tgt.__proto__;
225 tgt.__proto__ = { get foo() {return this.bla} };
226 assertEquals(true, Reflect.deleteProperty(tgt, "foo"));
227 tgt.__proto__ = proto;
180 } 228 }
181 })(); 229 })();
182 230
183 231
184 232
185 //////////////////////////////////////////////////////////////////////////////// 233 ////////////////////////////////////////////////////////////////////////////////
186 // Reflect.isExtensible 234 // Reflect.isExtensible
187 235
188 236
189 (function testReflectIsExtensibleArity() { 237 (function testReflectIsExtensibleArity() {
(...skipping 11 matching lines...) Expand all
201 (function testReflectIsExtensibleOnObject() { 249 (function testReflectIsExtensibleOnObject() {
202 // This should be the last test as it modifies the objects irreversibly. 250 // This should be the last test as it modifies the objects irreversibly.
203 for (let tgt of objects) { 251 for (let tgt of objects) {
204 prepare(tgt); 252 prepare(tgt);
205 if (tgt instanceof Int32Array) continue; // issue v8:4460 253 if (tgt instanceof Int32Array) continue; // issue v8:4460
206 assertTrue(Reflect.isExtensible(tgt)); 254 assertTrue(Reflect.isExtensible(tgt));
207 Object.preventExtensions(tgt); 255 Object.preventExtensions(tgt);
208 assertFalse(Reflect.isExtensible(tgt)); 256 assertFalse(Reflect.isExtensible(tgt));
209 } 257 }
210 })(); 258 })();
OLDNEW
« no previous file with comments | « src/objects-inl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698