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

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: Updated cf. comments. 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
171 var metadata = fooClass.metadata;
172 Expect.isNotNull(metadata);
173 Expect.equals(10, metadata.length);
174
175 // @Metadata
176 var metadata0 = metadata[0];
177 Expect.isTrue(metadata0 is InstanceMirror);
178 Expect.isFalse(metadata0.hasReflectee);
179 Expect.throws(() => metadata0.reflectee, (_) => true);
180 Expect.isTrue(metadata0 is TypeInstanceMirror);
181 var metadataType = metadata0.representedType;
182 Expect.isNotNull(metadataType);
183 Expect.stringEquals('Metadata', metadataType.simpleName);
184
185 // @Metadata(null)
186 var metadata1 = metadata[1];
187 Expect.isTrue(metadata1 is InstanceMirror);
188 Expect.isFalse(metadata1.hasReflectee);
189 Expect.throws(() => metadata1.reflectee, (_) => true);
190 Expect.equals(metadataType.originalDeclaration, metadata1.type);
191 metadata1.getField('data').then((InstanceMirror data) {
192 Expect.isNotNull(data);
193 Expect.isTrue(data.hasReflectee);
194 Expect.isNull(data.reflectee);
195 });
196
197 // @Metadata(true)
198 var metadata2 = metadata[2];
199 Expect.isTrue(metadata2 is InstanceMirror);
200 Expect.isFalse(metadata2.hasReflectee);
201 Expect.throws(() => metadata2.reflectee, (_) => true);
202 Expect.equals(metadataType.originalDeclaration, metadata2.type);
203 metadata2.getField('data').then((InstanceMirror data) {
204 Expect.isNotNull(data);
205 Expect.isTrue(data.hasReflectee);
206 Expect.isTrue(data.reflectee);
207 });
208
209 // @Metadata(false)
210 var metadata3 = metadata[3];
211 Expect.isTrue(metadata3 is InstanceMirror);
212 Expect.isFalse(metadata3.hasReflectee);
213 Expect.throws(() => metadata3.reflectee, (_) => true);
214 Expect.equals(metadataType.originalDeclaration, metadata3.type);
215 metadata3.getField('data').then((InstanceMirror data) {
216 Expect.isNotNull(data);
217 Expect.isTrue(data.hasReflectee);
218 Expect.isFalse(data.reflectee);
219 });
220
221 // @Metadata(0)
222 var metadata4 = metadata[4];
223 Expect.isTrue(metadata4 is InstanceMirror);
224 Expect.isFalse(metadata4.hasReflectee);
225 Expect.throws(() => metadata4.reflectee, (_) => true);
226 Expect.equals(metadataType.originalDeclaration, metadata4.type);
227 metadata4.getField('data').then((InstanceMirror data) {
228 Expect.isNotNull(data);
229 Expect.isTrue(data.hasReflectee);
230 Expect.equals(0, data.reflectee);
231 });
232
233 // @Metadata(1.5)
234 var metadata5 = metadata[5];
235 Expect.isTrue(metadata5 is InstanceMirror);
236 Expect.isFalse(metadata5.hasReflectee);
237 Expect.throws(() => metadata5.reflectee, (_) => true);
238 Expect.equals(metadataType.originalDeclaration, metadata5.type);
239 metadata5.getField('data').then((InstanceMirror data) {
240 Expect.isNotNull(data);
241 Expect.isTrue(data.hasReflectee);
242 Expect.equals(1.5, data.reflectee);
243 });
244
245 // @Metadata("Foo")
246 var metadata6 = metadata[6];
247 Expect.isTrue(metadata6 is InstanceMirror);
248 Expect.isFalse(metadata6.hasReflectee);
249 Expect.throws(() => metadata6.reflectee, (_) => true);
250 Expect.equals(metadataType.originalDeclaration, metadata6.type);
251 metadata6.getField('data').then((InstanceMirror data) {
252 Expect.isNotNull(data);
253 Expect.isTrue(data.hasReflectee);
254 Expect.stringEquals("Foo", data.reflectee);
255 });
256
257 // @Metadata(const ["Foo"])
258 var metadata7 = metadata[7];
259 Expect.isTrue(metadata7 is InstanceMirror);
260 Expect.isFalse(metadata7.hasReflectee);
261 Expect.throws(() => metadata7.reflectee, (_) => true);
262 Expect.equals(metadataType.originalDeclaration, metadata7.type);
263 metadata7.getField('data').then((InstanceMirror data) {
264 Expect.isTrue(data is ListInstanceMirror);
265 Expect.isFalse(data.hasReflectee);
266 Expect.throws(() => data.reflectee, (_) => true);
267 ListInstanceMirror listData = data;
268 Expect.equals(1, listData.length);
269 listData[0].then((InstanceMirror element) {
270 Expect.isNotNull(element);
271 Expect.isTrue(element.hasReflectee);
272 Expect.stringEquals("Foo", element.reflectee);
273 });
274 });
275
276 // @Metadata(const {'foo':"Foo"})
277 var metadata8 = metadata[8];
278 Expect.isTrue(metadata8 is InstanceMirror);
279 Expect.isFalse(metadata8.hasReflectee);
280 Expect.throws(() => metadata8.reflectee, (_) => true);
281 Expect.equals(metadataType.originalDeclaration, metadata8.type);
282 metadata8.getField('data').then((InstanceMirror data) {
283 Expect.isTrue(data is MapInstanceMirror);
284 Expect.isFalse(data.hasReflectee);
285 Expect.throws(() => data.reflectee, (_) => true);
286 MapInstanceMirror mapData = data;
287 Expect.equals(1, mapData.length);
288 Expect.stringEquals('foo', mapData.keys.iterator().next());
289 mapData['foo'].then((InstanceMirror element) {
290 Expect.isNotNull(element);
291 Expect.isTrue(element.hasReflectee);
292 Expect.stringEquals("Foo", element.reflectee);
293 });
294 Expect.isNull(mapData['bar']);
295 });
296
297 // @metadata
298 var metadata9 = metadata[9];
299 Expect.isTrue(metadata9 is InstanceMirror);
300 Expect.isFalse(metadata9.hasReflectee);
301 Expect.throws(() => metadata9.reflectee, (_) => true);
302 Expect.equals(metadataType.originalDeclaration, metadata9.type);
303 metadata9.getField('data').then((InstanceMirror data) {
304 Expect.isNotNull(data);
305 Expect.isTrue(data.hasReflectee);
306 Expect.isNull(data.reflectee);
307 });
166 } 308 }
167 309
168 // Testing interface Bar: 310 // Testing interface Bar:
169 // 311 //
170 // interface Bar<E> { 312 // interface Bar<E> {
171 // 313 //
172 // } 314 // }
173 void testBar(MirrorSystem system, LibraryMirror helperLibrary, 315 void testBar(MirrorSystem system, LibraryMirror helperLibrary,
174 Map<String,TypeMirror> classes) { 316 Map<String,TypeMirror> classes) {
175 var barInterface = classes["Bar"]; 317 var barInterface = classes["Bar"];
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 378
237 var barInterfaceMembers = barInterface.members; 379 var barInterfaceMembers = barInterface.members;
238 Expect.isNotNull(barInterfaceMembers, "Declared members map is null"); 380 Expect.isNotNull(barInterfaceMembers, "Declared members map is null");
239 Expect.isTrue(barInterfaceMembers.isEmpty, 381 Expect.isTrue(barInterfaceMembers.isEmpty,
240 "Declared members map is unempty"); 382 "Declared members map is unempty");
241 383
242 var barInterfaceConstructors = barInterface.constructors; 384 var barInterfaceConstructors = barInterface.constructors;
243 Expect.isNotNull(barInterfaceConstructors, "Constructors map is null"); 385 Expect.isNotNull(barInterfaceConstructors, "Constructors map is null");
244 Expect.isTrue(barInterfaceConstructors.isEmpty, 386 Expect.isTrue(barInterfaceConstructors.isEmpty,
245 "Constructors map is unempty"); 387 "Constructors map is unempty");
388
389 var metadata = barInterface.metadata;
390 Expect.isNotNull(metadata);
391 Expect.equals(0, metadata.length);
246 } 392 }
247 393
248 // Testing class Baz: 394 // Testing class Baz:
249 // 395 //
250 // class Baz<E,F extends Foo> implements Bar<E> { 396 // class Baz<E,F extends Foo> implements Bar<E> {
251 // Baz(); 397 // Baz();
252 // const Baz.named(); 398 // const Baz.named();
253 // factory Baz.factory() => new Baz<E,F>(); 399 // factory Baz.factory() => new Baz<E,F>();
254 // 400 //
255 // static method1(e) {} 401 // static method1(e) {}
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 Expect.isFalse(bazClassFactoryConstructor.isRedirectingConstructor); 860 Expect.isFalse(bazClassFactoryConstructor.isRedirectingConstructor);
715 Expect.isTrue(bazClassFactoryConstructor.isFactoryConstructor); 861 Expect.isTrue(bazClassFactoryConstructor.isFactoryConstructor);
716 Expect.stringEquals('Baz.factory', bazClassFactoryConstructor.simpleName); 862 Expect.stringEquals('Baz.factory', bazClassFactoryConstructor.simpleName);
717 Expect.stringEquals('Baz.factory', bazClassFactoryConstructor.displayName); 863 Expect.stringEquals('Baz.factory', bazClassFactoryConstructor.displayName);
718 Expect.stringEquals('mirrors_helper.Baz.Baz.factory', 864 Expect.stringEquals('mirrors_helper.Baz.Baz.factory',
719 bazClassFactoryConstructor.qualifiedName); 865 bazClassFactoryConstructor.qualifiedName);
720 Expect.stringEquals('factory', bazClassFactoryConstructor.constructorName); 866 Expect.stringEquals('factory', bazClassFactoryConstructor.constructorName);
721 867
722 // TODO(johnniwinther): Add more tests of constructors. 868 // TODO(johnniwinther): Add more tests of constructors.
723 // TODO(johnniwinther): Add a test for unnamed factory methods. 869 // TODO(johnniwinther): Add a test for unnamed factory methods.
870
871 var metadata = bazClass.metadata;
872 Expect.isNotNull(metadata);
873 Expect.equals(0, metadata.length);
724 } 874 }
725 875
726 // class _PrivateClass { 876 // class _PrivateClass {
727 // var _privateField; 877 // var _privateField;
728 // get _privateGetter => _privateField; 878 // get _privateGetter => _privateField;
729 // void set _privateSetter(value) => _privateField = value; 879 // void set _privateSetter(value) => _privateField = value;
730 // void _privateMethod() {} 880 // void _privateMethod() {}
731 // _PrivateClass._privateConstructor(); 881 // _PrivateClass._privateConstructor();
732 // factory _PrivateClass._privateFactoryConstructor() => new _PrivateClass(); 882 // factory _PrivateClass._privateFactoryConstructor() => new _PrivateClass();
733 // } 883 // }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
778 var privateFactoryConstructor = 928 var privateFactoryConstructor =
779 privateClass.members['_PrivateClass._privateFactoryConstructor']; 929 privateClass.members['_PrivateClass._privateFactoryConstructor'];
780 Expect.isNotNull(privateFactoryConstructor); 930 Expect.isNotNull(privateFactoryConstructor);
781 Expect.isTrue(privateFactoryConstructor is MethodMirror); 931 Expect.isTrue(privateFactoryConstructor is MethodMirror);
782 Expect.isTrue(privateFactoryConstructor.isConstructor); 932 Expect.isTrue(privateFactoryConstructor.isConstructor);
783 Expect.isTrue(privateFactoryConstructor.isPrivate); 933 Expect.isTrue(privateFactoryConstructor.isPrivate);
784 Expect.isFalse(privateFactoryConstructor.isConstConstructor); 934 Expect.isFalse(privateFactoryConstructor.isConstConstructor);
785 Expect.isFalse(privateFactoryConstructor.isRedirectingConstructor); 935 Expect.isFalse(privateFactoryConstructor.isRedirectingConstructor);
786 Expect.isFalse(privateFactoryConstructor.isGenerativeConstructor); 936 Expect.isFalse(privateFactoryConstructor.isGenerativeConstructor);
787 Expect.isTrue(privateFactoryConstructor.isFactoryConstructor); 937 Expect.isTrue(privateFactoryConstructor.isFactoryConstructor);
938
939 var metadata = privateClass.metadata;
940 Expect.isNotNull(metadata);
941 Expect.equals(0, metadata.length);
788 } 942 }
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