| // Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // @dart = 2.9 |
| |
| // Tests positional and optional arguments for various JS objects. |
| |
| @JS() |
| library js_parameters_test; |
| |
| import 'package:js/js.dart'; |
| import 'package:expect/expect.dart'; |
| |
| @JS() |
| external void eval(String code); |
| |
| @JS() |
| class Foo { |
| external factory Foo(); |
| external singleArg(a); |
| external singlePositionalArg([dynamic a]); |
| external mixedPositionalArgs(a, [dynamic b]); |
| } |
| |
| @JS() |
| class Bar { |
| external static singleArg(a); |
| external static singlePositionalArg([dynamic a]); |
| external static mixedPositionalArgs(a, [dynamic b]); |
| } |
| |
| external singleArg(a); |
| external singlePositionalArg([dynamic a]); |
| external mixedPositionalArgs(a, [dynamic b]); |
| |
| main() { |
| eval(r""" |
| function Foo() {} |
| Foo.prototype.singleArg = function(a) { |
| return a; |
| } |
| Foo.prototype.singlePositionalArg = singleArg; |
| Foo.prototype.mixedPositionalArgs = function(a, b) { |
| if (arguments.length == 0) return a; |
| return arguments[arguments.length - 1]; |
| } |
| |
| var Bar = { |
| singleArg: function(a) { |
| return a; |
| }, |
| singlePositionalArg: singleArg, |
| mixedPositionalArgs: function(a, b) { |
| if (arguments.length == 0) return a; |
| return arguments[arguments.length - 1]; |
| }, |
| }; |
| |
| function singleArg(a) { |
| return a; |
| } |
| var singlePositionalArg = singleArg; |
| function mixedPositionalArgs(a, b) { |
| if (arguments.length == 0) return a; |
| return arguments[arguments.length - 1]; |
| } |
| """); |
| |
| var foo = Foo(); |
| Expect.equals(foo.singleArg(2), 2); |
| Expect.equals(foo.singlePositionalArg(2), 2); |
| Expect.equals(foo.singlePositionalArg(), null); |
| Expect.equals(foo.mixedPositionalArgs(3), 3); |
| Expect.equals(foo.mixedPositionalArgs(3, 4), 4); |
| |
| Expect.equals(Bar.singleArg(2), 2); |
| Expect.equals(Bar.singlePositionalArg(2), 2); |
| Expect.equals(Bar.singlePositionalArg(), null); |
| Expect.equals(Bar.mixedPositionalArgs(3), 3); |
| Expect.equals(Bar.mixedPositionalArgs(3, 4), 4); |
| |
| Expect.equals(singleArg(2), 2); |
| Expect.equals(singlePositionalArg(2), 2); |
| Expect.equals(singlePositionalArg(), null); |
| Expect.equals(mixedPositionalArgs(3), 3); |
| Expect.equals(mixedPositionalArgs(3, 4), 4); |
| } |