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 testGetPrivateSymbol() { | |
98 var symbol = %CreatePrivateSymbol("secret"); | |
99 var O = { [symbol]: "value" }; | |
100 var proxy = new Proxy(O, { get(t, name) { assertUnreachable(); }}); | |
101 assertEquals(undefined, proxy[symbol]); | |
102 assertEquals(undefined, Reflect.get(proxy, symbol)); | |
103 assertEquals("value", O[symbol]); | |
104 assertEquals("value", Reflect.get(O, symbol)); | |
105 })(); | |
106 | |
107 (function testGetInternalIterators() { | |
108 var log = []; | |
109 assertThrows(function() { | |
neis
2015/12/03 12:01:24
Can you move the assertThrows down to the line tha
| |
110 var array = [1,2,3,4,5] | |
111 var origIt = array[Symbol.iterator](); | |
112 var it = new Proxy(origIt, { | |
113 get(t, name) { | |
114 log.push(`[[Get]](iterator, ${String(name)})`); | |
115 return Reflect.get(t, name); | |
116 }, | |
117 set(t, name, val) { | |
118 log.push(`[[Set]](iterator, ${String(name)}, ${String(val)})`); | |
119 return Reflect.set(t, name, val); | |
120 } | |
121 }); | |
122 | |
123 for (var v of it) log.push(v); | |
124 }, TypeError); | |
125 assertEquals([ | |
126 "[[Get]](iterator, Symbol(Symbol.iterator))", | |
127 "[[Get]](iterator, next)" | |
128 ], log); | |
129 })(); | |
OLD | NEW |