// 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; } var proxy = new Proxy(target, {}); assertEquals(undefined, seen_receiver); Reflect.apply(proxy, apply_receiver, [1,2,3,4]); assertSame(apply_receiver, seen_receiver); })(); (function testCallProxyTrap() { var called_target = false; var called_handler = false; var target = function(a, b) { called_target = true; assertEquals(1, a); assertEquals(2, b); } var handler = { apply: function(target, this_arg, args) { target.apply(this_arg, args); called_handler = true; } } var proxy = new Proxy(target, handler); assertFalse(called_target); assertFalse(called_handler); Reflect.apply(proxy, {rec:1}, [1,2]); assertTrue(called_target); assertTrue(called_handler); })();