OLD | NEW |
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import 'package:kernel/ast.dart'; | 5 import 'package:kernel/ast.dart'; |
6 import 'package:kernel/class_hierarchy.dart'; | 6 import 'package:kernel/class_hierarchy.dart'; |
7 import 'package:kernel/core_types.dart'; | 7 import 'package:kernel/core_types.dart'; |
8 import 'package:kernel/src/incremental_class_hierarchy.dart'; | 8 import 'package:kernel/src/incremental_class_hierarchy.dart'; |
9 import 'package:kernel/testing/mock_sdk_program.dart'; | 9 import 'package:kernel/testing/mock_sdk_program.dart'; |
10 import 'package:kernel/text/ast_to_text.dart'; | 10 import 'package:kernel/text/ast_to_text.dart'; |
(...skipping 778 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
789 expect(hierarchy.getInterfaceMember(b, aMethodName), aMethod); | 789 expect(hierarchy.getInterfaceMember(b, aMethodName), aMethod); |
790 expect(hierarchy.getInterfaceMember(b, bMethodName), bMethod); | 790 expect(hierarchy.getInterfaceMember(b, bMethodName), bMethod); |
791 expect(hierarchy.getInterfaceMember(b, aSetterName, setter: true), aSetter); | 791 expect(hierarchy.getInterfaceMember(b, aSetterName, setter: true), aSetter); |
792 expect(hierarchy.getInterfaceMember(b, bSetterName, setter: true), bSetter); | 792 expect(hierarchy.getInterfaceMember(b, bSetterName, setter: true), bSetter); |
793 expect(hierarchy.getInterfaceMember(c, aMethodName), aMethod); | 793 expect(hierarchy.getInterfaceMember(c, aMethodName), aMethod); |
794 expect(hierarchy.getInterfaceMember(c, bMethodName), bMethod); | 794 expect(hierarchy.getInterfaceMember(c, bMethodName), bMethod); |
795 expect(hierarchy.getInterfaceMember(c, aSetterName, setter: true), aSetter); | 795 expect(hierarchy.getInterfaceMember(c, aSetterName, setter: true), aSetter); |
796 expect(hierarchy.getInterfaceMember(c, bSetterName, setter: true), bSetter); | 796 expect(hierarchy.getInterfaceMember(c, bSetterName, setter: true), bSetter); |
797 } | 797 } |
798 | 798 |
| 799 void test_getOrderedClasses() { |
| 800 var a = addClass(new Class(name: 'A', supertype: objectSuper)); |
| 801 var b = addClass(new Class(name: 'B', supertype: a.asThisSupertype)); |
| 802 var c = addClass(new Class(name: 'C', supertype: b.asThisSupertype)); |
| 803 |
| 804 void assertOrderOfClasses(List<Class> unordered, List<Class> expected) { |
| 805 var ordered = hierarchy.getOrderedClasses(unordered).toList(); |
| 806 var lastIndex = -1; |
| 807 for (var node in expected) { |
| 808 var index = ordered.indexOf(node); |
| 809 expect(index, greaterThan(lastIndex)); |
| 810 lastIndex = index; |
| 811 } |
| 812 } |
| 813 |
| 814 assertOrderOfClasses([a, b, c], [a, b, c]); |
| 815 assertOrderOfClasses([b, a, c], [a, b, c]); |
| 816 assertOrderOfClasses([a, c, b], [a, b, c]); |
| 817 assertOrderOfClasses([b, c, a], [a, b, c]); |
| 818 assertOrderOfClasses([c, a, b], [a, b, c]); |
| 819 assertOrderOfClasses([c, b, a], [a, b, c]); |
| 820 } |
| 821 |
799 void test_getRankedSuperclasses() { | 822 void test_getRankedSuperclasses() { |
800 var a = addImplementsClass('A', []); | 823 var a = addImplementsClass('A', []); |
801 var b = addImplementsClass('B', [a]); | 824 var b = addImplementsClass('B', [a]); |
802 var c = addImplementsClass('C', [a]); | 825 var c = addImplementsClass('C', [a]); |
803 var d = addImplementsClass('D', [c]); | 826 var d = addImplementsClass('D', [c]); |
804 var e = addImplementsClass('E', [b, d]); | 827 var e = addImplementsClass('E', [b, d]); |
805 | 828 |
806 _assertTestLibraryText(''' | 829 _assertTestLibraryText(''' |
807 class A {} | 830 class A {} |
808 class B implements self::A {} | 831 class B implements self::A {} |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
882 actualText = actualText.replaceAll(' extends core::Object', ''); | 905 actualText = actualText.replaceAll(' extends core::Object', ''); |
883 | 906 |
884 // if (actualText != expectedText) { | 907 // if (actualText != expectedText) { |
885 // print('-------- Actual --------'); | 908 // print('-------- Actual --------'); |
886 // print(actualText + '------------------------'); | 909 // print(actualText + '------------------------'); |
887 // } | 910 // } |
888 | 911 |
889 expect(actualText, expectedText); | 912 expect(actualText, expectedText); |
890 } | 913 } |
891 } | 914 } |
OLD | NEW |