Chromium Code Reviews| Index: test/mjsunit/harmony/proxies-call.js |
| diff --git a/test/mjsunit/harmony/proxies-call.js b/test/mjsunit/harmony/proxies-call.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..2f69ea79085be0e228160e34321c6fa48ee4a282 |
| --- /dev/null |
| +++ b/test/mjsunit/harmony/proxies-call.js |
| @@ -0,0 +1,85 @@ |
| +// Copyright 2015 the V8 project authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +// Flags: --harmony-proxies --harmony-reflect |
| + |
| +(function testNonCallable() { |
| + var proxy = new Proxy({},{}); |
| + assertThrows(function(){ proxy() }, TypeError); |
| + |
| + var proxy2 = new Proxy(proxy, {}); |
| + assertThrows(function(){ proxy2() }, TypeError); |
| +})(); |
| + |
| +(function testCallProxyFallbackNoArguments() { |
| + var called = false; |
| + var target = function() { |
| + called = true; |
| + } |
| + var proxy = new Proxy(target, {}); |
| + assertFalse(called); |
| + proxy(); |
| + assertTrue(called); |
| + |
| + called = false; |
| + var proxy2 = new Proxy(proxy, {}); |
| + assertFalse(called); |
| + proxy2(); |
| + assertTrue(called); |
| +})(); |
| + |
| +(function testCallProxyFallback1Argument() { |
| + var called = false; |
| + var target = function(a) { |
| + called = true; |
| + assertEquals('1', a); |
| + } |
| + var proxy = new Proxy(target, {}); |
| + assertFalse(called); |
| + proxy('1'); |
| + assertTrue(called); |
| +})(); |
| + |
| +(function testCallProxyFallback2Arguments() { |
| + var called = false; |
| + var target = function(a, b) { |
| + called = true; |
| + assertEquals('1', a); |
| + assertEquals('2', b); |
| + } |
| + var proxy = new Proxy(target, {}); |
| + assertFalse(called); |
| + proxy('1', '2'); |
| + assertTrue(called); |
| +})(); |
| + |
| +(function testCallProxyFallbackChangedReceiver() { |
| + var apply_receiver = {receiver:true}; |
| + var seen_receiver = undefined; |
| + var target = function() { |
| + seen_receiver = this; |
|
Jakob Kummerow
2015/12/07 15:55:08
super-nit: s/ / /
|
| + } |
| + var proxy = new Proxy(target, {}); |
| + assertEquals(undefined, seen_receiver); |
| + Reflect.apply(proxy, apply_receiver , [1,2,3,4]); |
|
Jakob Kummerow
2015/12/07 15:55:08
nit: s/ ,/,/
|
| + assertSame(apply_receiver, seen_receiver); |
| +})(); |
| + |
| +(function testCallProxyTrap() { |
| + var called = false; |
| + var target = function(a, b) { |
| + called = true; |
| + assertEquals(1, a); |
| + assertEquals(2, b); |
| + } |
| + var handler = { |
| + apply : function(target, this_arg, args) { |
| + target.apply(this_arg, args); |
|
Jakob Kummerow
2015/12/07 15:55:08
You probably want to check that this, too, was cal
Camillo Bruni
2015/12/07 16:54:10
added called_target and called_handler
|
| + } |
| + } |
| + var proxy = new Proxy(target, handler); |
| + assertFalse(called); |
| + Reflect.apply(proxy, {rec:1}, [1,2,3,4]); |
|
Jakob Kummerow
2015/12/07 15:55:08
I'd align the arguments with the assertEquals() in
Camillo Bruni
2015/12/07 16:54:10
right.
|
| + assertTrue(called); |
| +})(); |