| // 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. |
| |
| /// @assertion A class has a set of direct superinterfaces. This set includes |
| /// the interface of its superclass and the interfaces specified in the |
| /// implements clause of the class. |
| /// interfaces: |
| /// implements typeList |
| /// ; |
| /// @description Checks that a class can indeed specify one or more |
| /// superinterfaces using the implements clause and an instance of this class |
| /// will also be an instance of those interfaces as well as any and all of its |
| /// superclasses' superinterfaces. |
| /// @author pagolubev |
| |
| import "../../../Utils/expect.dart"; |
| |
| abstract class IA {} |
| class A implements IA {} |
| abstract class IB {} |
| class B extends A implements IB {} |
| abstract class IC {} |
| abstract class ID {} |
| class C extends B implements IC, ID {} |
| |
| main() { |
| C c = new C(); |
| Expect.isTrue(c is IA); |
| Expect.isTrue(c is IB); |
| Expect.isTrue(c is IC); |
| Expect.isTrue(c is ID); |
| Expect.runtimeIsType<IA>(c); |
| Expect.runtimeIsType<IB>(c); |
| Expect.runtimeIsType<IC>(c); |
| Expect.runtimeIsType<ID>(c); |
| } |