| // 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. |
| |
| import "package:expect/expect.dart"; |
| |
| // simple test with no types in signature |
| class A1 { |
| call() => 42; |
| } |
| |
| // same test, include return type |
| class A2 { |
| int call() => 35; |
| } |
| |
| class B { |
| call() => 28; |
| } |
| |
| // A call() operator can have any arity |
| class C { |
| call(arg) => 7 * arg; |
| } |
| |
| // Test named arguments |
| class D { |
| call([arg = 6]) => 7 * arg; |
| } |
| |
| // Non-trivial method body combination of positional and named. |
| class E { |
| String call(String str, {int count: 1}) { |
| StringBuffer buffer = new StringBuffer(); |
| for (var i = 0; i < count; i++) { |
| buffer.write(str); |
| if (i < count - 1) { |
| buffer.write(":"); |
| } |
| } |
| return buffer.toString(); |
| } |
| } |
| |
| 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(2)); |
| Expect.equals(42, d.call()); |
| Expect.equals(7, d.call(1)); |
| Expect.equals(14, d.call(2)); |
| |
| var e = new E(); |
| Expect.equals("foo", e("foo")); |
| Expect.equals("foo:foo", e("foo", count: 2)); |
| Expect.equals("foo:foo:foo", e("foo", count: 3)); |
| Expect.equals("foo", e.call("foo")); |
| Expect.equals("foo:foo", e.call("foo", count: 2)); |
| Expect.equals("foo:foo:foo", e.call("foo", count: 3)); |
| |
| Expect.isFalse(a1 is Function); //# 01: ok |
| Expect.isFalse(e is Function); //# 02: ok |
| } |