@@ -17,8 +17,16 @@ void main() {
1717 TypeChecker staticMapChecker;
1818 TypeChecker staticHashMapChecker;
1919
20+ // Resolved top-level types from package:source_gen.
21+ DartType staticGenerator;
22+ DartType staticGeneratorForAnnotation;
23+ TypeChecker staticGeneratorChecker;
24+ TypeChecker staticGeneratorForAnnotationChecker;
25+
2026 setUpAll (() async {
21- final resolver = await resolveSource ('' );
27+ final resolver = await resolveSource (r'''
28+ export 'package:source_gen/source_gen.dart';
29+ ''' );
2230
2331 final core = resolver.getLibraryByName ('dart.core' );
2432 staticMap = core.getType ('Map' ).type;
@@ -27,12 +35,22 @@ void main() {
2735 final collection = resolver.getLibraryByName ('dart.collection' );
2836 staticHashMap = collection.getType ('HashMap' ).type;
2937 staticHashMapChecker = new TypeChecker .fromStatic (staticHashMap);
38+
39+ final sourceGen = resolver.getLibraryByName ('source_gen' );
40+ staticGenerator = findType (sourceGen, 'Generator' ).type;
41+ staticGeneratorChecker = new TypeChecker .fromStatic (staticGenerator);
42+ staticGeneratorForAnnotation =
43+ findType (sourceGen, 'GeneratorForAnnotation' ).type;
44+ staticGeneratorForAnnotationChecker =
45+ new TypeChecker .fromStatic (staticGeneratorForAnnotation);
3046 });
3147
3248 // Run a common set of type comparison checks with various implementations.
3349 void commonTests ({
3450 @required TypeChecker checkMap (),
3551 @required TypeChecker checkHashMap (),
52+ @required TypeChecker checkGenerator (),
53+ @required TypeChecker checkGeneratorForAnnotation (),
3654 }) {
3755 group ('(Map)' , () {
3856 test ('should equal dart:core#Map' , () {
@@ -72,24 +90,60 @@ void main() {
7290 expect (checkHashMap ().isAssignableFromType (staticMap), isFalse);
7391 });
7492 });
93+
94+ group ('(Generator)' , () {
95+ test ('should equal Generator' , () {
96+ expect (checkGenerator ().isExactlyType (staticGenerator), isTrue,
97+ reason: '${checkGenerator ()} != $staticGenerator ' );
98+ });
99+
100+ test ('should not be a super type of Generator' , () {
101+ expect (checkGenerator ().isSuperTypeOf (staticGenerator), isFalse,
102+ reason: '${checkGenerator ()} is super of $staticGenerator ' );
103+ });
104+
105+ test ('should be a super type of GeneratorForAnnotation' , () {
106+ expect (checkGenerator ().isSuperTypeOf (staticGeneratorForAnnotation),
107+ isTrue,
108+ reason:
109+ '${checkGenerator ()} is not super of $staticGeneratorForAnnotation ' );
110+ });
111+
112+ test ('should be assignable from GeneratorForAnnotation' , () {
113+ expect (
114+ checkGenerator ().isAssignableFromType (staticGeneratorForAnnotation),
115+ isTrue,
116+ reason:
117+ '${checkGenerator ()} is not assignable from $staticGeneratorForAnnotation ' );
118+ });
119+ });
75120 }
76121
77122 group ('TypeChecker.forRuntime' , () {
78123 commonTests (
79124 checkMap: () => const TypeChecker .fromRuntime (Map ),
80- checkHashMap: () => const TypeChecker .fromRuntime (HashMap ));
125+ checkHashMap: () => const TypeChecker .fromRuntime (HashMap ),
126+ checkGenerator: () => const TypeChecker .fromRuntime (Generator ),
127+ checkGeneratorForAnnotation: () =>
128+ const TypeChecker .fromRuntime (GeneratorForAnnotation ));
81129 });
82130
83131 group ('TypeChecker.forStatic' , () {
84132 commonTests (
85133 checkMap: () => staticMapChecker,
86- checkHashMap: () => staticHashMapChecker);
134+ checkHashMap: () => staticHashMapChecker,
135+ checkGenerator: () => staticGeneratorChecker,
136+ checkGeneratorForAnnotation: () => staticGeneratorForAnnotationChecker);
87137 });
88138
89139 group ('TypeChecker.fromUrl' , () {
90140 commonTests (
91141 checkMap: () => const TypeChecker .fromUrl ('dart:core#Map' ),
92142 checkHashMap: () =>
93- const TypeChecker .fromUrl ('dart:collection#HashMap' ));
143+ const TypeChecker .fromUrl ('dart:collection#HashMap' ),
144+ checkGenerator: () => const TypeChecker .fromUrl (
145+ 'package:source_gen/src/generator.dart#Generator' ),
146+ checkGeneratorForAnnotation: () => const TypeChecker .fromUrl (
147+ 'package:source_gen/src/generator_for_annotation.dart#GeneratorForAnnotation' ));
94148 });
95149}
0 commit comments