Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: tests/compiler/dart2js/mirrors_test.dart

Issue 11571058: DeclarationMirror extended with metadata. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 '../../../sdk/lib/_internal/compiler/implementation/mirrors/mirrors.dart' ; 5 import '../../../sdk/lib/_internal/compiler/implementation/mirrors/mirrors.dart' ;
6 import '../../../sdk/lib/_internal/compiler/implementation/mirrors/mirrors_util. dart'; 6 import '../../../sdk/lib/_internal/compiler/implementation/mirrors/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 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 "Constructors map is unempty"); 156 "Constructors map is unempty");
157 157
158 // TODO(johnniwinther): Add thorough tests of [ClassMirror.functions], 158 // TODO(johnniwinther): Add thorough tests of [ClassMirror.functions],
159 // [ClassMirror.getters], [ClassMirror.setters], [ClassMirror.members], 159 // [ClassMirror.getters], [ClassMirror.setters], [ClassMirror.members],
160 // and [ClassMirror.variable]. 160 // and [ClassMirror.variable].
161 Expect.isNotNull(fooClass.functions); 161 Expect.isNotNull(fooClass.functions);
162 Expect.isNotNull(fooClass.members); 162 Expect.isNotNull(fooClass.members);
163 Expect.isNotNull(fooClass.getters); 163 Expect.isNotNull(fooClass.getters);
164 Expect.isNotNull(fooClass.setters); 164 Expect.isNotNull(fooClass.setters);
165 Expect.isNotNull(fooClass.variables); 165 Expect.isNotNull(fooClass.variables);
166
167 //////////////////////////////////////////////////////////////////////////////
168 // Metadata tests
169 //
170 // @Metadata
ahe 2012/12/19 15:44:03 These comments would be more helpful closer to the
Johnni Winther 2012/12/20 11:30:35 Done.
171 // @Metadata(null)
172 // @Metadata(true)
173 // @Metadata(false)
174 // @Metadata(0)
175 // @Metadata(1.5)
176 // @Metadata("Foo")
177 // @Metadata(const ["Foo"])
178 // @Metadata(const {'foo':"Foo"})
179 //////////////////////////////////////////////////////////////////////////////
180
181 var metadata = fooClass.metadata;
182 Expect.isNotNull(metadata);
183 Expect.equals(9, metadata.length);
184
185 var metadata0 = metadata[0];
186 Expect.isTrue(metadata0 is InstanceMirror);
187 Expect.isFalse(metadata0.hasReflectee);
188 Expect.throws(() => metadata0.reflectee, (_) => true);
189 Expect.isTrue(metadata0 is TypeInstanceMirror);
190 var metadataType = metadata0.representedType;
191 Expect.isNotNull(metadataType);
192 Expect.stringEquals('Metadata', metadataType.simpleName);
193
194 var metadata1 = metadata[1];
195 Expect.isTrue(metadata1 is InstanceMirror);
196 Expect.isFalse(metadata1.hasReflectee);
197 Expect.throws(() => metadata1.reflectee, (_) => true);
198 Expect.equals(metadataType.originalDeclaration, metadata1.type);
199 metadata1.getField('data').then((InstanceMirror data) {
200 Expect.isNotNull(data);
201 Expect.isTrue(data.hasReflectee);
202 Expect.isNull(data.reflectee);
203 });
204
205 var metadata2 = metadata[2];
206 Expect.isTrue(metadata2 is InstanceMirror);
207 Expect.isFalse(metadata2.hasReflectee);
208 Expect.throws(() => metadata2.reflectee, (_) => true);
209 Expect.equals(metadataType.originalDeclaration, metadata2.type);
210 metadata2.getField('data').then((InstanceMirror data) {
211 Expect.isNotNull(data);
212 Expect.isTrue(data.hasReflectee);
213 Expect.isTrue(data.reflectee);
214 });
215
216 var metadata3 = metadata[3];
217 Expect.isTrue(metadata3 is InstanceMirror);
218 Expect.isFalse(metadata3.hasReflectee);
219 Expect.throws(() => metadata3.reflectee, (_) => true);
220 Expect.equals(metadataType.originalDeclaration, metadata3.type);
221 metadata3.getField('data').then((InstanceMirror data) {
222 Expect.isNotNull(data);
223 Expect.isTrue(data.hasReflectee);
224 Expect.isFalse(data.reflectee);
225 });
226
227 var metadata4 = metadata[4];
228 Expect.isTrue(metadata4 is InstanceMirror);
229 Expect.isFalse(metadata4.hasReflectee);
230 Expect.throws(() => metadata4.reflectee, (_) => true);
231 Expect.equals(metadataType.originalDeclaration, metadata4.type);
232 metadata4.getField('data').then((InstanceMirror data) {
233 Expect.isNotNull(data);
234 Expect.isTrue(data.hasReflectee);
235 Expect.equals(0, data.reflectee);
236 });
237
238 var metadata5 = metadata[5];
239 Expect.isTrue(metadata5 is InstanceMirror);
240 Expect.isFalse(metadata5.hasReflectee);
241 Expect.throws(() => metadata5.reflectee, (_) => true);
242 Expect.equals(metadataType.originalDeclaration, metadata5.type);
243 metadata5.getField('data').then((InstanceMirror data) {
244 Expect.isNotNull(data);
245 Expect.isTrue(data.hasReflectee);
246 Expect.equals(1.5, data.reflectee);
247 });
248
249 var metadata6 = metadata[6];
250 Expect.isTrue(metadata6 is InstanceMirror);
251 Expect.isFalse(metadata6.hasReflectee);
252 Expect.throws(() => metadata6.reflectee, (_) => true);
253 Expect.equals(metadataType.originalDeclaration, metadata6.type);
254 metadata6.getField('data').then((InstanceMirror data) {
255 Expect.isNotNull(data);
256 Expect.isTrue(data.hasReflectee);
257 Expect.stringEquals("Foo", data.reflectee);
258 });
259
260 var metadata7 = metadata[7];
261 Expect.isTrue(metadata7 is InstanceMirror);
262 Expect.isFalse(metadata7.hasReflectee);
263 Expect.throws(() => metadata7.reflectee, (_) => true);
264 Expect.equals(metadataType.originalDeclaration, metadata7.type);
265 metadata7.getField('data').then((InstanceMirror data) {
266 Expect.isTrue(data is ListInstanceMirror);
267 Expect.isFalse(data.hasReflectee);
268 Expect.throws(() => data.reflectee, (_) => true);
269 ListInstanceMirror listData = data;
270 Expect.equals(1, listData.length);
271 listData[0].then((InstanceMirror element) {
272 Expect.isNotNull(element);
273 Expect.isTrue(element.hasReflectee);
274 Expect.stringEquals("Foo", element.reflectee);
275 });
276 });
277
278 var metadata8 = metadata[8];
279 Expect.isTrue(metadata8 is InstanceMirror);
280 Expect.isFalse(metadata8.hasReflectee);
281 Expect.throws(() => metadata8.reflectee, (_) => true);
282 Expect.equals(metadataType.originalDeclaration, metadata8.type);
283 metadata8.getField('data').then((InstanceMirror data) {
284 Expect.isTrue(data is MapInstanceMirror);
285 Expect.isFalse(data.hasReflectee);
286 Expect.throws(() => data.reflectee, (_) => true);
287 MapInstanceMirror mapData = data;
288 Expect.equals(1, mapData.length);
289 Expect.stringEquals('foo', mapData.keys.iterator().next());
290 mapData['foo'].then((InstanceMirror element) {
291 Expect.isNotNull(element);
292 Expect.isTrue(element.hasReflectee);
293 Expect.stringEquals("Foo", element.reflectee);
294 });
295 Expect.isNull(mapData['bar']);
296 });
297
166 } 298 }
167 299
168 // Testing interface Bar: 300 // Testing interface Bar:
169 // 301 //
170 // interface Bar<E> { 302 // interface Bar<E> {
171 // 303 //
172 // } 304 // }
173 void testBar(MirrorSystem system, LibraryMirror helperLibrary, 305 void testBar(MirrorSystem system, LibraryMirror helperLibrary,
174 Map<String,TypeMirror> classes) { 306 Map<String,TypeMirror> classes) {
175 var barInterface = classes["Bar"]; 307 var barInterface = classes["Bar"];
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 368
237 var barInterfaceMembers = barInterface.members; 369 var barInterfaceMembers = barInterface.members;
238 Expect.isNotNull(barInterfaceMembers, "Declared members map is null"); 370 Expect.isNotNull(barInterfaceMembers, "Declared members map is null");
239 Expect.isTrue(barInterfaceMembers.isEmpty, 371 Expect.isTrue(barInterfaceMembers.isEmpty,
240 "Declared members map is unempty"); 372 "Declared members map is unempty");
241 373
242 var barInterfaceConstructors = barInterface.constructors; 374 var barInterfaceConstructors = barInterface.constructors;
243 Expect.isNotNull(barInterfaceConstructors, "Constructors map is null"); 375 Expect.isNotNull(barInterfaceConstructors, "Constructors map is null");
244 Expect.isTrue(barInterfaceConstructors.isEmpty, 376 Expect.isTrue(barInterfaceConstructors.isEmpty,
245 "Constructors map is unempty"); 377 "Constructors map is unempty");
378
379 var metadata = barInterface.metadata;
380 Expect.isNotNull(metadata);
381 Expect.equals(0, metadata.length);
246 } 382 }
247 383
248 // Testing class Baz: 384 // Testing class Baz:
249 // 385 //
250 // class Baz<E,F extends Foo> implements Bar<E> { 386 // class Baz<E,F extends Foo> implements Bar<E> {
251 // Baz(); 387 // Baz();
252 // const Baz.named(); 388 // const Baz.named();
253 // factory Baz.factory() => new Baz<E,F>(); 389 // factory Baz.factory() => new Baz<E,F>();
254 // 390 //
255 // static method1(e) {} 391 // static method1(e) {}
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 Expect.isFalse(bazClassFactoryConstructor.isRedirectingConstructor); 850 Expect.isFalse(bazClassFactoryConstructor.isRedirectingConstructor);
715 Expect.isTrue(bazClassFactoryConstructor.isFactoryConstructor); 851 Expect.isTrue(bazClassFactoryConstructor.isFactoryConstructor);
716 Expect.stringEquals('Baz.factory', bazClassFactoryConstructor.simpleName); 852 Expect.stringEquals('Baz.factory', bazClassFactoryConstructor.simpleName);
717 Expect.stringEquals('Baz.factory', bazClassFactoryConstructor.displayName); 853 Expect.stringEquals('Baz.factory', bazClassFactoryConstructor.displayName);
718 Expect.stringEquals('mirrors_helper.Baz.Baz.factory', 854 Expect.stringEquals('mirrors_helper.Baz.Baz.factory',
719 bazClassFactoryConstructor.qualifiedName); 855 bazClassFactoryConstructor.qualifiedName);
720 Expect.stringEquals('factory', bazClassFactoryConstructor.constructorName); 856 Expect.stringEquals('factory', bazClassFactoryConstructor.constructorName);
721 857
722 // TODO(johnniwinther): Add more tests of constructors. 858 // TODO(johnniwinther): Add more tests of constructors.
723 // TODO(johnniwinther): Add a test for unnamed factory methods. 859 // TODO(johnniwinther): Add a test for unnamed factory methods.
860
861 var metadata = bazClass.metadata;
862 Expect.isNotNull(metadata);
863 Expect.equals(0, metadata.length);
724 } 864 }
725 865
726 // class _PrivateClass { 866 // class _PrivateClass {
727 // var _privateField; 867 // var _privateField;
728 // get _privateGetter => _privateField; 868 // get _privateGetter => _privateField;
729 // void set _privateSetter(value) => _privateField = value; 869 // void set _privateSetter(value) => _privateField = value;
730 // void _privateMethod() {} 870 // void _privateMethod() {}
731 // _PrivateClass._privateConstructor(); 871 // _PrivateClass._privateConstructor();
732 // factory _PrivateClass._privateFactoryConstructor() => new _PrivateClass(); 872 // factory _PrivateClass._privateFactoryConstructor() => new _PrivateClass();
733 // } 873 // }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
778 var privateFactoryConstructor = 918 var privateFactoryConstructor =
779 privateClass.members['_PrivateClass._privateFactoryConstructor']; 919 privateClass.members['_PrivateClass._privateFactoryConstructor'];
780 Expect.isNotNull(privateFactoryConstructor); 920 Expect.isNotNull(privateFactoryConstructor);
781 Expect.isTrue(privateFactoryConstructor is MethodMirror); 921 Expect.isTrue(privateFactoryConstructor is MethodMirror);
782 Expect.isTrue(privateFactoryConstructor.isConstructor); 922 Expect.isTrue(privateFactoryConstructor.isConstructor);
783 Expect.isTrue(privateFactoryConstructor.isPrivate); 923 Expect.isTrue(privateFactoryConstructor.isPrivate);
784 Expect.isFalse(privateFactoryConstructor.isConstConstructor); 924 Expect.isFalse(privateFactoryConstructor.isConstConstructor);
785 Expect.isFalse(privateFactoryConstructor.isRedirectingConstructor); 925 Expect.isFalse(privateFactoryConstructor.isRedirectingConstructor);
786 Expect.isFalse(privateFactoryConstructor.isGenerativeConstructor); 926 Expect.isFalse(privateFactoryConstructor.isGenerativeConstructor);
787 Expect.isTrue(privateFactoryConstructor.isFactoryConstructor); 927 Expect.isTrue(privateFactoryConstructor.isFactoryConstructor);
928
929 var metadata = privateClass.metadata;
930 Expect.isNotNull(metadata);
931 Expect.equals(0, metadata.length);
788 } 932 }
OLDNEW
« tests/compiler/dart2js/mirrors_helper.dart ('K') | « tests/compiler/dart2js/mirrors_helper.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698