| // Copyright (c) 2011, 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 test program testing that NoSuchMethod is properly called. |
| |
| import "dart:mirrors" show reflect; |
| import "package:expect/expect.dart"; |
| |
| class GetName { |
| foo({a, b}) => "foo"; |
| moo({b}) => "moo"; |
| } |
| |
| String getName(im) => reflect(new GetName()).delegate(im); |
| |
| class NoSuchMethodTest { |
| foo({a: 10, b: 20}) { |
| return (10 * a) + b; |
| } |
| |
| noSuchMethod(Invocation im) { |
| Expect.equals("moo", getName(im)); |
| Expect.equals(0, im.positionalArguments.length); |
| Expect.equals(1, im.namedArguments.length); |
| return foo(b: im.namedArguments[const Symbol("b")]); |
| } |
| |
| static testMain() { |
| var obj = new NoSuchMethodTest(); |
| Expect.equals(199, obj.moo(b: 99)); // obj.NoSuchMethod called here. |
| } |
| } |
| |
| main() { |
| NoSuchMethodTest.testMain(); |
| } |