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

Side by Side Diff: test/mjsunit/harmony/proxies-with.js

Issue 1815773002: Remove runtime flags for Proxy and Reflect (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebased Created 4 years, 9 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
OLDNEW
(Empty)
1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are
4 // met:
5 //
6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided
11 // with the distribution.
12 // * Neither the name of Google Inc. nor the names of its
13 // contributors may be used to endorse or promote products derived
14 // from this software without specific prior written permission.
15 //
16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
28 // Flags: --harmony-proxies
29
30
31 // Helper.
32
33 function TestWithProxies(test, x, y, z) {
34 test(function(h) { return new Proxy({}, h) }, x, y, z)
35 test(function(h) {
36 return new Proxy(function() {}, h)
37 }, x, y, z)
38 }
39
40
41
42 // Getting.
43
44 function TestWithGet(handler) {
45 TestWithProxies(TestWithGet2, handler)
46 }
47
48 var c = "global"
49 var key = ""
50
51 function TestWithGet2(create, handler) {
52 var b = "local"
53
54 var p = create(handler);
55 assertEquals("onproxy", p.a);
56 assertEquals(undefined, p.b);
57 assertEquals(undefined, p.c);
58
59 with (p) {
60 assertEquals("onproxy", a);
61 assertEquals("local", b);
62 assertEquals("global", c);
63 }
64
65 var o = Object.create(p, {d: {value: "own"}})
66 with (o) {
67 assertEquals("onproxy", a)
68 assertEquals("local", b);
69 assertEquals("global", c)
70 assertEquals("own", d)
71 }
72 }
73
74 TestWithGet({
75 get(target, k) {
76 key = k;
77 return k === "a" ? "onproxy" : undefined
78 },
79 has(target, k) { return k === 'a' }
80 })
81
82 TestWithGet({
83 get: function(r, k) { return this.get2(r, k) },
84 get2: function(r, k) { key = k; return k === "a" ? "onproxy" : undefined },
85 has(target, k) { return k === 'a' }
86 })
87
88
89
90
91 // Invoking.
92
93 function TestWithGetCall(handler) {
94 TestWithProxies(TestWithGetCall2, handler)
95 }
96
97 var receiver = null
98 var c = function() { return "global" }
99
100 function TestWithGetCall2(create, handler) {
101 var b = function() { return "local" }
102
103 var p = create(handler)
104 with (p) {
105 receiver = null
106 assertEquals("onproxy", a())
107 assertSame(p, receiver)
108 assertEquals("local", b())
109 assertEquals("global", c())
110 }
111
112 var o = Object.create(p, {d: {value: function() { return "own" }}})
113 with (o) {
114 receiver = null
115 assertEquals("onproxy", a())
116 assertSame(o, receiver)
117 assertEquals("local", b())
118 assertEquals("global", c())
119 assertEquals("own", d())
120 }
121 }
122
123 function onproxy() { receiver = this; return "onproxy" }
124
125 TestWithGetCall({
126 get: function(r, k) { key = k; return k === "a" ? onproxy : undefined },
127 has: function(t, k) {
128 key = k;
129 return k === "a";
130 }
131 })
132
133 TestWithGetCall({
134 get: function(r, k) { return this.get2(r, k) },
135 get2: function(r, k) { key = k; return k === "a" ? onproxy : undefined },
136 has: function(t, k) {
137 key = k;
138 return k === "a";
139 }
140 })
141
142 TestWithGetCall({
143 get: function(r, k) { key = k; return k === "a" ? onproxy : undefined },
144 has: function(t, k) {
145 return this.has2(k)
146 },
147 has2: function(k) {
148 key = k;
149 return k === "a";
150 }
151 })
152
153 TestWithGetCall({
154 get: function(r, k) { key = k; return k === "a" ? onproxy : undefined },
155 has: function(t, k) {
156 key = k;
157 return k === "a";
158 }
159 })
160
161
162 function TestWithGetCallThrow(handler) {
163 TestWithProxies(TestWithGetCallThrow2, handler)
164 }
165
166 function TestWithGetCallThrow2(create, handler) {
167 var b = function() { return "local" }
168
169 var p = create(handler)
170 with (p) {
171 assertThrowsEquals(function(){ a() }, "myexn")
172 assertEquals("local", b())
173 assertEquals("global", c())
174 }
175
176 var o = Object.create(p, {d: {value: function() { return "own" }}})
177 with (o) {
178 assertThrowsEquals(function(){ a() }, "myexn")
179 assertEquals("local", b())
180 assertEquals("global", c())
181 assertEquals("own", d())
182 }
183 }
184
185 function onproxythrow() { throw "myexn" }
186
187 TestWithGetCallThrow({
188 has: function(r, k) { return k === "a"; },
189 get: function(r, k) { key = k; return k === "a" ? onproxythrow : undefined },
190 })
191
192 TestWithGetCallThrow({
193 has: function(r, k) { return k === "a"; },
194 get: function(r, k) { return this.get2(r, k) },
195 get2: function(r, k) { key = k; return k === "a" ? onproxythrow : undefined },
196 })
197
198
199
200 // Setting.
201
202 var key
203 var val
204
205 function TestWithSet(handler, hasSetter) {
206 TestWithProxies(TestWithSet2, handler, hasSetter)
207 }
208
209 var c = "global"
210
211 function TestWithSet2(create, handler, hasSetter) {
212 var b = "local"
213
214 var p = create(handler)
215 key = val = undefined
216 with (p) {
217 a = "set"
218 assertEquals("a", key)
219 assertEquals("set", val)
220 assertEquals("local", b)
221 assertEquals("global", c)
222 b = "local"
223 c = "global"
224 assertEquals("a", key)
225 assertEquals("set", val)
226 }
227
228 if (!hasSetter) return
229
230 var o = Object.create(p, {d: {value: "own"}})
231 key = val = undefined
232 with (o) {
233 a = "set"
234 assertEquals("a", key)
235 assertEquals("set", val)
236 assertEquals("local", b)
237 assertEquals("global", c)
238 assertEquals("own", d)
239 b = "local"
240 c = "global"
241 d = "own"
242 assertEquals("a", key)
243 assertEquals("set", val)
244 }
245 }
246
247 TestWithSet({
248 set: function(r, k, v) { key = k; val = v; return true },
249 has: function(t, k) {
250 return k === "a"
251 }
252 })
253
254 TestWithSet({
255 set: function(r, k, v) { return this.set2(r, k, v) },
256 set2: function(r, k, v) { key = k; val = v; return true },
257 has: function(t, k) {
258 return k === "a"
259 }
260 })
261
262 TestWithSet({
263 has: function(t, k) {
264 return k === "a"
265 },
266 defineProperty: function(t, k, desc) { key = k; val = desc.value }
267 })
268
269 TestWithSet({
270 has: function(t, k) {
271 return this.has2(k)
272 },
273 has2: function(k) {
274 return k === "a"
275 },
276 defineProperty: function(t, k, desc) { this.defineProperty2(k, desc) },
277 defineProperty2: function(k, desc) { key = k; val = desc.value }
278 })
279
280 TestWithSet({
281 has: function(t, k) {
282 return k === "a"
283 },
284 defineProperty: function(t, k, desc) { key = k; val = desc.value }
285 })
286
287 TestWithSet({
288 has: function(t, k) {
289 return this.has2(k) },
290 has2: function(k) {
291 return k === "a"
292 },
293 set: function(t, k, v) { key = k; val = v; return true }
294 }, true)
295
296 TestWithSet({
297 has: function(t, k) {
298 return k === "a"
299 },
300 defineProperty: function(t, k, desc) { key = k; val = desc.value }
301 })
302
303
304 function TestWithSetThrow(handler, hasSetter) {
305 TestWithProxies(TestWithSetThrow2, handler, hasSetter)
306 }
307
308 function TestWithSetThrow2(create, handler, hasSetter) {
309 var p = create(handler)
310 assertThrowsEquals(function(){
311 with (p) {
312 a = 1
313 }
314 }, "myexn")
315
316 if (!hasSetter) return
317
318 var o = Object.create(p, {})
319 assertThrowsEquals(function(){
320 with (o) {
321 a = 1
322 }
323 }, "myexn")
324 }
325
326 TestWithSetThrow({
327 set: function() { throw "myexn" },
328 has: function(t, k) {
329 return k === "a"
330 }
331 })
332
333 TestWithSetThrow({
334 has: function() { throw "myexn" },
335 })
336
337 TestWithSetThrow({
338 has: function() { throw "myexn" },
339 })
340
341 TestWithSetThrow({
342 has: function(t, k) {
343 return k === "a"
344 },
345 defineProperty: function() { throw "myexn" }
346 })
347
348 TestWithSetThrow({
349 has: function(t, k) {
350 return k === "a"
351 },
352 set: function() { throw "myexn" }
353 }, true)
OLDNEW
« no previous file with comments | « test/mjsunit/harmony/proxies-set-prototype-of.js ('k') | test/mjsunit/harmony/proxies-with-unscopables.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698