| // 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. |
| |
| import "package:expect/expect.dart"; |
| |
| // Testing method invocation. |
| // Currently testing only NoSuchMethodError. |
| |
| class A { |
| A() {} |
| int foo() { |
| return 1; |
| } |
| } |
| |
| class B { |
| get f { |
| throw 123; |
| } |
| } |
| |
| class MethodInvocationTest { |
| static void testNullReceiver() { |
| dynamic a = new A(); |
| Expect.equals(1, a.foo()); |
| a = null; |
| bool exceptionCaught = false; |
| try { |
| a.foo(); |
| } on NoSuchMethodError catch (e) { |
| exceptionCaught = true; |
| } |
| Expect.equals(true, exceptionCaught); |
| } |
| |
| static testGetterMethodInvocation() { |
| var b = new B(); |
| try { |
| b.f(); |
| } catch (e) { |
| Expect.equals(123, e); |
| } |
| } |
| |
| static void testMain() { |
| testNullReceiver(); |
| testGetterMethodInvocation(); |
| } |
| } |
| |
| main() { |
| MethodInvocationTest.testMain(); |
| } |