| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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("../../../pkg/dartdoc/lib/mirrors.dart"); | 5 #import("../../../pkg/dartdoc/lib/mirrors.dart"); |
| 6 #import("../../../pkg/dartdoc/lib/mirrors_util.dart"); | 6 #import("../../../pkg/dartdoc/lib/mirrors_util.dart"); |
| 7 | 7 |
| 8 #import('dart:io'); | 8 #import('dart:io'); |
| 9 | 9 |
| 10 int count(Iterable iterable) { | 10 int count(Iterable iterable) { |
| (...skipping 28 matching lines...) Expand all Loading... |
| 39 var libPath = dirPath.join(new Path.fromNative('../../../')); | 39 var libPath = dirPath.join(new Path.fromNative('../../../')); |
| 40 var inputPath = dirPath.join(new Path.fromNative('mirrors_helper.dart')); | 40 var inputPath = dirPath.join(new Path.fromNative('mirrors_helper.dart')); |
| 41 var compilation = new Compilation.library([inputPath], libPath); | 41 var compilation = new Compilation.library([inputPath], libPath); |
| 42 Expect.isNotNull(compilation, "No compilation created"); | 42 Expect.isNotNull(compilation, "No compilation created"); |
| 43 | 43 |
| 44 var mirrors = compilation.mirrors; | 44 var mirrors = compilation.mirrors; |
| 45 Expect.isNotNull(mirrors, "No mirror system returned from compilation"); | 45 Expect.isNotNull(mirrors, "No mirror system returned from compilation"); |
| 46 | 46 |
| 47 var libraries = mirrors.libraries; | 47 var libraries = mirrors.libraries; |
| 48 Expect.isNotNull(libraries, "No libraries map returned"); | 48 Expect.isNotNull(libraries, "No libraries map returned"); |
| 49 Expect.isFalse(libraries.isEmpty(), "Empty libraries map returned"); | 49 Expect.isFalse(libraries.isEmpty, "Empty libraries map returned"); |
| 50 | 50 |
| 51 var helperLibrary = libraries["mirrors_helper"]; | 51 var helperLibrary = libraries["mirrors_helper"]; |
| 52 Expect.isNotNull(helperLibrary, "Library 'mirrors_helper' not found"); | 52 Expect.isNotNull(helperLibrary, "Library 'mirrors_helper' not found"); |
| 53 Expect.stringEquals("mirrors_helper", helperLibrary.simpleName, | 53 Expect.stringEquals("mirrors_helper", helperLibrary.simpleName, |
| 54 "Unexpected library simple name"); | 54 "Unexpected library simple name"); |
| 55 Expect.stringEquals("mirrors_helper", helperLibrary.qualifiedName, | 55 Expect.stringEquals("mirrors_helper", helperLibrary.qualifiedName, |
| 56 "Unexpected library qualified name"); | 56 "Unexpected library qualified name"); |
| 57 | 57 |
| 58 var types = helperLibrary.types; | 58 var types = helperLibrary.types; |
| 59 Expect.isNotNull(types, "No types map returned"); | 59 Expect.isNotNull(types, "No types map returned"); |
| 60 Expect.isFalse(types.isEmpty(), "Empty types map returned"); | 60 Expect.isFalse(types.isEmpty, "Empty types map returned"); |
| 61 | 61 |
| 62 testFoo(mirrors, helperLibrary, types); | 62 testFoo(mirrors, helperLibrary, types); |
| 63 testBar(mirrors, helperLibrary, types); | 63 testBar(mirrors, helperLibrary, types); |
| 64 testBaz(mirrors, helperLibrary, types); | 64 testBaz(mirrors, helperLibrary, types); |
| 65 // TODO(johnniwinther): Add test of class [Boz] and typedef [Func]. | 65 // TODO(johnniwinther): Add test of class [Boz] and typedef [Func]. |
| 66 // TODO(johnniwinther): Add tests of type argument substitution, which | 66 // TODO(johnniwinther): Add tests of type argument substitution, which |
| 67 // is not currently implemented in dart2js. | 67 // is not currently implemented in dart2js. |
| 68 // TODO(johnniwinther): Add tests of Location and Source. | 68 // TODO(johnniwinther): Add tests of Location and Source. |
| 69 testPrivate(mirrors, helperLibrary, types); | 69 testPrivate(mirrors, helperLibrary, types); |
| 70 } | 70 } |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 var objectType = fooClass.superclass; | 106 var objectType = fooClass.superclass; |
| 107 Expect.isNotNull(objectType, "Superclass is null"); | 107 Expect.isNotNull(objectType, "Superclass is null"); |
| 108 Expect.isTrue(objectType.isObject, "Object is not Object"); | 108 Expect.isTrue(objectType.isObject, "Object is not Object"); |
| 109 Expect.isFalse(objectType.isDeclaration, "Object type is declaration"); | 109 Expect.isFalse(objectType.isDeclaration, "Object type is declaration"); |
| 110 Expect.isTrue(containsType(fooClass, | 110 Expect.isTrue(containsType(fooClass, |
| 111 computeSubdeclarations(objectType)), | 111 computeSubdeclarations(objectType)), |
| 112 "Class is not subclass of superclass"); | 112 "Class is not subclass of superclass"); |
| 113 | 113 |
| 114 var fooInterfaces = fooClass.interfaces; | 114 var fooInterfaces = fooClass.interfaces; |
| 115 Expect.isNotNull(fooInterfaces, "Interfaces map is null"); | 115 Expect.isNotNull(fooInterfaces, "Interfaces map is null"); |
| 116 Expect.isTrue(fooInterfaces.isEmpty(), "Interfaces map is not empty"); | 116 Expect.isTrue(fooInterfaces.isEmpty, "Interfaces map is not empty"); |
| 117 | 117 |
| 118 var fooSubdeclarations = computeSubdeclarations(fooClass); | 118 var fooSubdeclarations = computeSubdeclarations(fooClass); |
| 119 Expect.equals(1, count(fooSubdeclarations), "Unexpected subtype count"); | 119 Expect.equals(1, count(fooSubdeclarations), "Unexpected subtype count"); |
| 120 for (var fooSubdeclaration in fooSubdeclarations) { | 120 for (var fooSubdeclaration in fooSubdeclarations) { |
| 121 Expect.equals(fooClass, fooSubdeclaration.superclass.declaration, | 121 Expect.equals(fooClass, fooSubdeclaration.superclass.declaration, |
| 122 "Class is not superclass of subclass"); | 122 "Class is not superclass of subclass"); |
| 123 } | 123 } |
| 124 | 124 |
| 125 Expect.throws(() => fooClass.typeArguments, | 125 Expect.throws(() => fooClass.typeArguments, |
| 126 (exception) => true, | 126 (exception) => true, |
| 127 "Class has type arguments"); | 127 "Class has type arguments"); |
| 128 var fooClassTypeVariables = fooClass.typeVariables; | 128 var fooClassTypeVariables = fooClass.typeVariables; |
| 129 Expect.isNotNull(fooClassTypeVariables, "Type variable list is null"); | 129 Expect.isNotNull(fooClassTypeVariables, "Type variable list is null"); |
| 130 Expect.isTrue(fooClassTypeVariables.isEmpty(), | 130 Expect.isTrue(fooClassTypeVariables.isEmpty, |
| 131 "Type variable list is not empty"); | 131 "Type variable list is not empty"); |
| 132 | 132 |
| 133 Expect.isNull(fooClass.defaultType, "Class has default type"); | 133 Expect.isNull(fooClass.defaultType, "Class has default type"); |
| 134 | 134 |
| 135 var fooClassMembers = fooClass.declaredMembers; | 135 var fooClassMembers = fooClass.declaredMembers; |
| 136 Expect.isNotNull(fooClassMembers, "Declared members map is null"); | 136 Expect.isNotNull(fooClassMembers, "Declared members map is null"); |
| 137 Expect.isTrue(fooClassMembers.isEmpty(), "Declared members map is unempty"); | 137 Expect.isTrue(fooClassMembers.isEmpty, "Declared members map is unempty"); |
| 138 | 138 |
| 139 var fooClassConstructors = fooClass.constructors; | 139 var fooClassConstructors = fooClass.constructors; |
| 140 Expect.isNotNull(fooClassConstructors, "Constructors map is null"); | 140 Expect.isNotNull(fooClassConstructors, "Constructors map is null"); |
| 141 Expect.isTrue(fooClassConstructors.isEmpty(), | 141 Expect.isTrue(fooClassConstructors.isEmpty, |
| 142 "Constructors map is unempty"); | 142 "Constructors map is unempty"); |
| 143 } | 143 } |
| 144 | 144 |
| 145 // Testing interface Bar: | 145 // Testing interface Bar: |
| 146 // | 146 // |
| 147 // interface Bar<E> { | 147 // interface Bar<E> { |
| 148 // | 148 // |
| 149 // } | 149 // } |
| 150 void testBar(MirrorSystem system, LibraryMirror helperLibrary, | 150 void testBar(MirrorSystem system, LibraryMirror helperLibrary, |
| 151 Map<String,TypeMirror> types) { | 151 Map<String,TypeMirror> types) { |
| (...skipping 27 matching lines...) Expand all Loading... |
| 179 var objectType = barInterface.superclass; | 179 var objectType = barInterface.superclass; |
| 180 Expect.isNotNull(objectType, "Superclass is null"); | 180 Expect.isNotNull(objectType, "Superclass is null"); |
| 181 Expect.isTrue(objectType.isObject, "Object is not Object"); | 181 Expect.isTrue(objectType.isObject, "Object is not Object"); |
| 182 Expect.isFalse(objectType.isDeclaration, "Object type is declaration"); | 182 Expect.isFalse(objectType.isDeclaration, "Object type is declaration"); |
| 183 Expect.isTrue(containsType(barInterface, | 183 Expect.isTrue(containsType(barInterface, |
| 184 computeSubdeclarations(objectType)), | 184 computeSubdeclarations(objectType)), |
| 185 "Class is not subclass of superclass"); | 185 "Class is not subclass of superclass"); |
| 186 | 186 |
| 187 var barInterfaces = barInterface.interfaces; | 187 var barInterfaces = barInterface.interfaces; |
| 188 Expect.isNotNull(barInterfaces, "Interfaces map is null"); | 188 Expect.isNotNull(barInterfaces, "Interfaces map is null"); |
| 189 Expect.isTrue(barInterfaces.isEmpty(), "Interfaces map is not empty"); | 189 Expect.isTrue(barInterfaces.isEmpty, "Interfaces map is not empty"); |
| 190 | 190 |
| 191 var barSubdeclarations = computeSubdeclarations(barInterface); | 191 var barSubdeclarations = computeSubdeclarations(barInterface); |
| 192 Expect.equals(1, count(barSubdeclarations), "Unexpected subtype count"); | 192 Expect.equals(1, count(barSubdeclarations), "Unexpected subtype count"); |
| 193 for (var barSubdeclaration in barSubdeclarations) { | 193 for (var barSubdeclaration in barSubdeclarations) { |
| 194 Expect.isTrue(containsType(barInterface, | 194 Expect.isTrue(containsType(barInterface, |
| 195 barSubdeclaration.interfaces), | 195 barSubdeclaration.interfaces), |
| 196 "Interface is not superinterface of subclass"); | 196 "Interface is not superinterface of subclass"); |
| 197 } | 197 } |
| 198 | 198 |
| 199 Expect.throws(() => barInterface.typeArguments, | 199 Expect.throws(() => barInterface.typeArguments, |
| 200 (exception) => true, | 200 (exception) => true, |
| 201 "Interface has type arguments"); | 201 "Interface has type arguments"); |
| 202 var barInterfaceTypeVariables = barInterface.typeVariables; | 202 var barInterfaceTypeVariables = barInterface.typeVariables; |
| 203 Expect.isNotNull(barInterfaceTypeVariables, "Type variable list is null"); | 203 Expect.isNotNull(barInterfaceTypeVariables, "Type variable list is null"); |
| 204 Expect.isFalse(barInterfaceTypeVariables.isEmpty(), | 204 Expect.isFalse(barInterfaceTypeVariables.isEmpty, |
| 205 "Type variable list is empty"); | 205 "Type variable list is empty"); |
| 206 Expect.equals(barInterfaceTypeVariables.length, 1, | 206 Expect.equals(barInterfaceTypeVariables.length, 1, |
| 207 "Unexpected number of type variables"); | 207 "Unexpected number of type variables"); |
| 208 | 208 |
| 209 var barE = barInterfaceTypeVariables[0]; | 209 var barE = barInterfaceTypeVariables[0]; |
| 210 Expect.isNotNull(barE, "Type variable is null"); | 210 Expect.isNotNull(barE, "Type variable is null"); |
| 211 Expect.isTrue(barE.isTypeVariable, "Type variable is not type variable"); | 211 Expect.isTrue(barE.isTypeVariable, "Type variable is not type variable"); |
| 212 | 212 |
| 213 Expect.isNull(barInterface.defaultType, "Interface has default type"); | 213 Expect.isNull(barInterface.defaultType, "Interface has default type"); |
| 214 | 214 |
| 215 var barInterfaceMembers = barInterface.declaredMembers; | 215 var barInterfaceMembers = barInterface.declaredMembers; |
| 216 Expect.isNotNull(barInterfaceMembers, "Declared members map is null"); | 216 Expect.isNotNull(barInterfaceMembers, "Declared members map is null"); |
| 217 Expect.isTrue(barInterfaceMembers.isEmpty(), | 217 Expect.isTrue(barInterfaceMembers.isEmpty, |
| 218 "Declared members map is unempty"); | 218 "Declared members map is unempty"); |
| 219 | 219 |
| 220 var barInterfaceConstructors = barInterface.constructors; | 220 var barInterfaceConstructors = barInterface.constructors; |
| 221 Expect.isNotNull(barInterfaceConstructors, "Constructors map is null"); | 221 Expect.isNotNull(barInterfaceConstructors, "Constructors map is null"); |
| 222 Expect.isTrue(barInterfaceConstructors.isEmpty(), | 222 Expect.isTrue(barInterfaceConstructors.isEmpty, |
| 223 "Constructors map is unempty"); | 223 "Constructors map is unempty"); |
| 224 } | 224 } |
| 225 | 225 |
| 226 // Testing class Baz: | 226 // Testing class Baz: |
| 227 // | 227 // |
| 228 // class Baz<E,F extends Foo> implements Bar<E> { | 228 // class Baz<E,F extends Foo> implements Bar<E> { |
| 229 // Baz(); | 229 // Baz(); |
| 230 // const Baz.named(); | 230 // const Baz.named(); |
| 231 // factory Baz.factory() => new Baz<E,F>(); | 231 // factory Baz.factory() => new Baz<E,F>(); |
| 232 // | 232 // |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 269 var objectType = bazClass.superclass; | 269 var objectType = bazClass.superclass; |
| 270 Expect.isNotNull(objectType, "Superclass is null"); | 270 Expect.isNotNull(objectType, "Superclass is null"); |
| 271 Expect.isTrue(objectType.isObject, "Object is not Object"); | 271 Expect.isTrue(objectType.isObject, "Object is not Object"); |
| 272 Expect.isFalse(objectType.isDeclaration, "Object type is declaration"); | 272 Expect.isFalse(objectType.isDeclaration, "Object type is declaration"); |
| 273 Expect.isTrue(containsType(bazClass, | 273 Expect.isTrue(containsType(bazClass, |
| 274 computeSubdeclarations(objectType)), | 274 computeSubdeclarations(objectType)), |
| 275 "Class is not subclass of superclass"); | 275 "Class is not subclass of superclass"); |
| 276 | 276 |
| 277 var bazInterfaces = bazClass.interfaces; | 277 var bazInterfaces = bazClass.interfaces; |
| 278 Expect.isNotNull(bazInterfaces, "Interfaces map is null"); | 278 Expect.isNotNull(bazInterfaces, "Interfaces map is null"); |
| 279 Expect.isTrue(!bazInterfaces.isEmpty(), "Interfaces map is empty"); | 279 Expect.isTrue(!bazInterfaces.isEmpty, "Interfaces map is empty"); |
| 280 for (var bazInterface in bazInterfaces) { | 280 for (var bazInterface in bazInterfaces) { |
| 281 Expect.isTrue(containsType(bazClass, | 281 Expect.isTrue(containsType(bazClass, |
| 282 computeSubdeclarations(objectType)), | 282 computeSubdeclarations(objectType)), |
| 283 "Class is not subclass of superinterface"); | 283 "Class is not subclass of superinterface"); |
| 284 } | 284 } |
| 285 | 285 |
| 286 var bazSubdeclarations = computeSubdeclarations(bazClass); | 286 var bazSubdeclarations = computeSubdeclarations(bazClass); |
| 287 Expect.equals(0, count(bazSubdeclarations), "Unexpected subtype count"); | 287 Expect.equals(0, count(bazSubdeclarations), "Unexpected subtype count"); |
| 288 | 288 |
| 289 var barInterface = findMirror(bazInterfaces, "Bar"); | 289 var barInterface = findMirror(bazInterfaces, "Bar"); |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 537 Expect.isFalse(funcTypedef.isVoid, "Typedef is void"); | 537 Expect.isFalse(funcTypedef.isVoid, "Typedef is void"); |
| 538 Expect.isFalse(funcTypedef.isTypeVariable, "Typedef is a type variable"); | 538 Expect.isFalse(funcTypedef.isTypeVariable, "Typedef is a type variable"); |
| 539 Expect.isTrue(funcTypedef.isTypedef, "Typedef is not a typedef"); | 539 Expect.isTrue(funcTypedef.isTypedef, "Typedef is not a typedef"); |
| 540 Expect.isFalse(funcTypedef.isFunction, "Typedef is a function"); | 540 Expect.isFalse(funcTypedef.isFunction, "Typedef is a function"); |
| 541 | 541 |
| 542 Expect.equals(helperLibrary, funcTypedef.library, | 542 Expect.equals(helperLibrary, funcTypedef.library, |
| 543 "Unexpected typedef library"); | 543 "Unexpected typedef library"); |
| 544 Expect.isNull(funcTypedef.superclass, "Non-null superclass on typedef"); | 544 Expect.isNull(funcTypedef.superclass, "Non-null superclass on typedef"); |
| 545 Expect.isNotNull(funcTypedef.interfaces, | 545 Expect.isNotNull(funcTypedef.interfaces, |
| 546 "Null interfaces map on typedef"); | 546 "Null interfaces map on typedef"); |
| 547 Expect.isTrue(funcTypedef.interfaces.isEmpty(), | 547 Expect.isTrue(funcTypedef.interfaces.isEmpty, |
| 548 "Non-empty interfaces map on typedef"); | 548 "Non-empty interfaces map on typedef"); |
| 549 Expect.isNotNull(funcTypedef.declaredMembers, | 549 Expect.isNotNull(funcTypedef.declaredMembers, |
| 550 "Declared members map is null on type def"); | 550 "Declared members map is null on type def"); |
| 551 Expect.isTrue(funcTypedef.declaredMembers.isEmpty(), | 551 Expect.isTrue(funcTypedef.declaredMembers.isEmpty, |
| 552 "Non-empty declared members map on typedef"); | 552 "Non-empty declared members map on typedef"); |
| 553 | 553 |
| 554 // TODO(johnniwinther): Returned typedef should not be the declaration: | 554 // TODO(johnniwinther): Returned typedef should not be the declaration: |
| 555 Expect.isTrue(funcTypedef.isDeclaration, "Typedef is not declaration"); | 555 Expect.isTrue(funcTypedef.isDeclaration, "Typedef is not declaration"); |
| 556 Expect.isFalse(funcTypedef.isClass, "Typedef is class"); | 556 Expect.isFalse(funcTypedef.isClass, "Typedef is class"); |
| 557 Expect.isFalse(funcTypedef.isInterface, "Typedef is interface"); | 557 Expect.isFalse(funcTypedef.isInterface, "Typedef is interface"); |
| 558 Expect.isFalse(funcTypedef.isPrivate, "Typedef is private"); | 558 Expect.isFalse(funcTypedef.isPrivate, "Typedef is private"); |
| 559 Expect.isNull(funcTypedef.defaultType, | 559 Expect.isNull(funcTypedef.defaultType, |
| 560 "Typedef default type is non-null"); | 560 "Typedef default type is non-null"); |
| 561 // TODO(johnniwinther): Should not throw an exception since the type should | 561 // TODO(johnniwinther): Should not throw an exception since the type should |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 732 Expect.isTrue(privateConstructor.isConstructor); | 732 Expect.isTrue(privateConstructor.isConstructor); |
| 733 Expect.isTrue(privateConstructor.isPrivate); | 733 Expect.isTrue(privateConstructor.isPrivate); |
| 734 | 734 |
| 735 var privateFactoryConstructor = | 735 var privateFactoryConstructor = |
| 736 privateClass.declaredMembers['_PrivateClass._privateFactoryConstructor']; | 736 privateClass.declaredMembers['_PrivateClass._privateFactoryConstructor']; |
| 737 Expect.isNotNull(privateFactoryConstructor); | 737 Expect.isNotNull(privateFactoryConstructor); |
| 738 Expect.isTrue(privateFactoryConstructor is MethodMirror); | 738 Expect.isTrue(privateFactoryConstructor is MethodMirror); |
| 739 Expect.isTrue(privateFactoryConstructor.isFactory); | 739 Expect.isTrue(privateFactoryConstructor.isFactory); |
| 740 Expect.isTrue(privateFactoryConstructor.isPrivate); | 740 Expect.isTrue(privateFactoryConstructor.isPrivate); |
| 741 } | 741 } |
| OLD | NEW |