| Index: tests/language/src/CallOperatorTest.dart
|
| diff --git a/tests/language/src/CallOperatorTest.dart b/tests/language/src/CallOperatorTest.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b89c8bcf8a234c4485d9c32a78b67b29704a885c
|
| --- /dev/null
|
| +++ b/tests/language/src/CallOperatorTest.dart
|
| @@ -0,0 +1,76 @@
|
| +// Copyright (c) 2012, 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.
|
| +
|
| +
|
| +// simple test with no types in signature
|
| +class A1 {
|
| + operator call() => 42;
|
| +}
|
| +
|
| +// same test, include return type
|
| +class A2 {
|
| + int operator call() => 35;
|
| +}
|
| +
|
| +class B {
|
| + call() => 28; // expect warning, should use 'operator call'
|
| +}
|
| +
|
| +// A call() operator can have any arity
|
| +class C {
|
| + operator call(arg) => 7 * arg;
|
| +}
|
| +
|
| +// Test named arguments
|
| +class D {
|
| + operator call([arg=6]) => 7 * arg;
|
| +}
|
| +
|
| +// non-trvial method body combination of positional and named
|
| +class E {
|
| + String operator call(String str, [int count=1]) {
|
| + String result = "";
|
| + for (var i = 0; i < count; i++) {
|
| + result += str;
|
| + if (i < count -1) {
|
| + result += ':';
|
| + }
|
| + }
|
| + return result;
|
| + }
|
| +}
|
| +
|
| +main() {
|
| + var a1 = new A1();
|
| + Expect.equals(42, a1());
|
| + Expect.equals(42, a1.call());
|
| +
|
| + var a2 = new A2();
|
| + Expect.equals(35, a2());
|
| + Expect.equals(35, a2.call());
|
| +
|
| + var b = new B();
|
| + Expect.equals(28, b());
|
| + Expect.equals(28, b.call());
|
| +
|
| + var c = new C();
|
| + Expect.equals(42, c(6));
|
| + Expect.equals(42, c.call(6));
|
| +
|
| + var d = new D();
|
| + Expect.equals(42, d());
|
| + Expect.equals(7, d(1));
|
| + Expect.equals(14, d(arg:2));
|
| + Expect.equals(42, d.call());
|
| + Expect.equals(7, d.call(1));
|
| + Expect.equals(14, d.call(arg:2));
|
| +
|
| + var e = new E();
|
| + Expect.equals("foo", e("foo"));
|
| + Expect.equals("foo:foo", e("foo", 2));
|
| + Expect.equals("foo:foo:foo", e("foo", count:3));
|
| + Expect.equals("foo", e.call("foo"));
|
| + Expect.equals("foo:foo", e.call("foo", 2));
|
| + Expect.equals("foo:foo:foo", e.call("foo", count:3));
|
| +}
|
|
|