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-proxies | 5 // Flags: --harmony-proxies --harmony-reflect --allow-natives-syntax |
6 | 6 |
7 (function testBasicFunctionality() { | 7 (function testBasicFunctionality() { |
8 var target = { | 8 var target = { |
9 target_one: 1, | 9 target_one: 1, |
10 property: "value" | 10 property: "value" |
11 }; | 11 }; |
12 | 12 |
13 var handler = {handler:1}; | 13 var handler = {handler:1}; |
14 | 14 |
15 var proxy = new Proxy(target, handler); | 15 var proxy = new Proxy(target, handler); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 // target for which the handler will return a value. | 86 // target for which the handler will return a value. |
87 Object.defineProperty(target, "key3", { | 87 Object.defineProperty(target, "key3", { |
88 configurable: false, | 88 configurable: false, |
89 set: function() { } | 89 set: function() { } |
90 }); | 90 }); |
91 assertEquals("value", proxy.property); | 91 assertEquals("value", proxy.property); |
92 assertThrows(function(){ proxy.key }, TypeError); | 92 assertThrows(function(){ proxy.key }, TypeError); |
93 assertEquals("value", proxy.key2); | 93 assertEquals("value", proxy.key2); |
94 assertThrows(function(){ proxy.key3 }, TypeError); | 94 assertThrows(function(){ proxy.key3 }, TypeError); |
95 })(); | 95 })(); |
| 96 |
| 97 (function testGetInternalIterators() { |
| 98 var log = []; |
| 99 var array = [1,2,3,4,5] |
| 100 var origIt = array[Symbol.iterator](); |
| 101 var it = new Proxy(origIt, { |
| 102 get(t, name) { |
| 103 log.push(`[[Get]](iterator, ${String(name)})`); |
| 104 return Reflect.get(t, name); |
| 105 }, |
| 106 set(t, name, val) { |
| 107 log.push(`[[Set]](iterator, ${String(name)}, ${String(val)})`); |
| 108 return Reflect.set(t, name, val); |
| 109 } |
| 110 }); |
| 111 |
| 112 assertThrows(function() { |
| 113 for (var v of it) log.push(v); |
| 114 }, TypeError); |
| 115 assertEquals([ |
| 116 "[[Get]](iterator, Symbol(Symbol.iterator))", |
| 117 "[[Get]](iterator, next)" |
| 118 ], log); |
| 119 })(); |
OLD | NEW |