diff options
Diffstat (limited to 'js/src/tests/test262/built-ins/Proxy/construct/call-parameters-new-target.js')
-rw-r--r-- | js/src/tests/test262/built-ins/Proxy/construct/call-parameters-new-target.js | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/Proxy/construct/call-parameters-new-target.js b/js/src/tests/test262/built-ins/Proxy/construct/call-parameters-new-target.js new file mode 100644 index 0000000000..353c4f4092 --- /dev/null +++ b/js/src/tests/test262/built-ins/Proxy/construct/call-parameters-new-target.js @@ -0,0 +1,42 @@ +// Copyright (C) 2017 Aleksey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-proxy-object-internal-methods-and-internal-slots-construct-argumentslist-newtarget +description: > + trap is called with handler object as its context, and parameters are: + target, an array list with the called arguments and the NewTarget +info: | + [[Construct]] (argumentsList, newTarget) + + 9. Let newObj be Call(trap, handler, «target, argArray, newTarget»). +features: [Proxy, Reflect, Reflect.construct] +---*/ + +function Target() {} + +function NewTarget() {} + +var handler = { + construct: function(target, args, newTarget) { + assert.sameValue(this, handler, "trap context is the handler object"); + assert.sameValue(target, Target, "first parameter is the target object"); + assert.sameValue(args.length, 2, "arguments list contains all construct arguments"); + + var a = args[0]; + var b = args[1]; + assert.sameValue(a, 1, "arguments list has first construct argument"); + assert.sameValue(b, 2, "arguments list has second construct argument"); + assert.sameValue(newTarget, NewTarget, "newTarget is passed as the third parameter"); + + return { + sum: a + b + }; + }, +}; + +var P = new Proxy(Target, handler); +var res = Reflect.construct(P, [1, 2], NewTarget); +assert.sameValue(res.sum, 3); + +reportCompare(0, 0); |