|  | // Copyright (c) 2013, 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. | 
|  |  | 
|  | library test.model_test; | 
|  |  | 
|  | import 'package:expect/expect.dart'; | 
|  |  | 
|  | import 'model.dart'; | 
|  |  | 
|  | main() { | 
|  | dynamic a = new A(); | 
|  | dynamic b = new B(); | 
|  | dynamic c = new C(); | 
|  |  | 
|  | Expect.isNull(a.field); | 
|  | Expect.equals('B:get field', b.field); | 
|  | Expect.equals('B:get field', c.field); | 
|  |  | 
|  | a.field = 42; | 
|  | b.field = 87; | 
|  | c.field = 89; | 
|  | Expect.equals(42, a.field); | 
|  | Expect.equals('B:get field', b.field); | 
|  | Expect.equals('B:get field', c.field); | 
|  | Expect.equals(89, fieldC); | 
|  |  | 
|  | Expect.equals('A:instanceMethod(7)', a.instanceMethod(7)); | 
|  | Expect.equals('B:instanceMethod(9)', b.instanceMethod(9)); | 
|  | Expect.equals('C:instanceMethod(13)', c.instanceMethod(13)); | 
|  |  | 
|  | Expect.equals('A:get accessor', a.accessor); | 
|  | Expect.equals('B:get accessor', b.accessor); | 
|  | Expect.equals('C:get accessor', c.accessor); | 
|  |  | 
|  | a.accessor = 'foo'; | 
|  | b.accessor = 'bar'; | 
|  | c.accessor = 'baz'; | 
|  |  | 
|  | Expect.equals('foo', accessorA); | 
|  | Expect.equals('bar', accessorB); | 
|  | Expect.equals('baz', accessorC); | 
|  |  | 
|  | Expect.equals('aMethod', a.aMethod()); | 
|  | Expect.equals('aMethod', b.aMethod()); | 
|  | Expect.equals('aMethod', c.aMethod()); | 
|  |  | 
|  | Expect.throwsNoSuchMethodError(() => a.bMethod()); | 
|  | Expect.equals('bMethod', b.bMethod()); | 
|  | Expect.equals('bMethod', c.bMethod()); | 
|  |  | 
|  | Expect.throwsNoSuchMethodError(() => a.cMethod()); | 
|  | Expect.throwsNoSuchMethodError(() => b.cMethod()); | 
|  | Expect.equals('cMethod', c.cMethod()); | 
|  | } |