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

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. comment. Created 7 years, 11 months 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
« no previous file with comments | « tests/compiler/dart2js/mirrors_helper.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 "Constructors map is unempty"); 157 "Constructors map is unempty");
158 158
159 // TODO(johnniwinther): Add thorough tests of [ClassMirror.functions], 159 // TODO(johnniwinther): Add thorough tests of [ClassMirror.functions],
160 // [ClassMirror.getters], [ClassMirror.setters], [ClassMirror.members], 160 // [ClassMirror.getters], [ClassMirror.setters], [ClassMirror.members],
161 // and [ClassMirror.variable]. 161 // and [ClassMirror.variable].
162 Expect.isNotNull(fooClass.functions); 162 Expect.isNotNull(fooClass.functions);
163 Expect.isNotNull(fooClass.members); 163 Expect.isNotNull(fooClass.members);
164 Expect.isNotNull(fooClass.getters); 164 Expect.isNotNull(fooClass.getters);
165 Expect.isNotNull(fooClass.setters); 165 Expect.isNotNull(fooClass.setters);
166 Expect.isNotNull(fooClass.variables); 166 Expect.isNotNull(fooClass.variables);
167
168 //////////////////////////////////////////////////////////////////////////////
169 // Metadata tests
170 //////////////////////////////////////////////////////////////////////////////
171
172 var metadata = fooClass.metadata;
173 Expect.isNotNull(metadata);
174 Expect.equals(10, metadata.length);
175
176 // @Metadata // This is intentionally the type literal.
177 var metadata0 = metadata[0];
178 Expect.isTrue(metadata0 is InstanceMirror);
179 Expect.isFalse(metadata0.hasReflectee);
180 Expect.throws(() => metadata0.reflectee, (_) => true);
181 Expect.isTrue(metadata0 is TypeInstanceMirror);
182 var metadataType = metadata0.representedType;
183 Expect.isNotNull(metadataType);
184 Expect.stringEquals('Metadata', metadataType.simpleName);
185
186 // @Metadata(null)
187 var metadata1 = metadata[1];
188 Expect.isTrue(metadata1 is InstanceMirror);
189 Expect.isFalse(metadata1.hasReflectee);
190 Expect.throws(() => metadata1.reflectee, (_) => true);
191 Expect.equals(metadataType.originalDeclaration, metadata1.type);
192 metadata1.getField('data').then((InstanceMirror data) {
193 Expect.isNotNull(data);
194 Expect.isTrue(data.hasReflectee);
195 Expect.isNull(data.reflectee);
196 });
197
198 // @Metadata(true)
199 var metadata2 = metadata[2];
200 Expect.isTrue(metadata2 is InstanceMirror);
201 Expect.isFalse(metadata2.hasReflectee);
202 Expect.throws(() => metadata2.reflectee, (_) => true);
203 Expect.equals(metadataType.originalDeclaration, metadata2.type);
204 metadata2.getField('data').then((InstanceMirror data) {
205 Expect.isNotNull(data);
206 Expect.isTrue(data.hasReflectee);
207 Expect.isTrue(data.reflectee);
208 });
209
210 // @Metadata(false)
211 var metadata3 = metadata[3];
212 Expect.isTrue(metadata3 is InstanceMirror);
213 Expect.isFalse(metadata3.hasReflectee);
214 Expect.throws(() => metadata3.reflectee, (_) => true);
215 Expect.equals(metadataType.originalDeclaration, metadata3.type);
216 metadata3.getField('data').then((InstanceMirror data) {
217 Expect.isNotNull(data);
218 Expect.isTrue(data.hasReflectee);
219 Expect.isFalse(data.reflectee);
220 });
221
222 // @Metadata(0)
223 var metadata4 = metadata[4];
224 Expect.isTrue(metadata4 is InstanceMirror);
225 Expect.isFalse(metadata4.hasReflectee);
226 Expect.throws(() => metadata4.reflectee, (_) => true);
227 Expect.equals(metadataType.originalDeclaration, metadata4.type);
228 metadata4.getField('data').then((InstanceMirror data) {
229 Expect.isNotNull(data);
230 Expect.isTrue(data.hasReflectee);
231 Expect.equals(0, data.reflectee);
232 });
233
234 // @Metadata(1.5)
235 var metadata5 = metadata[5];
236 Expect.isTrue(metadata5 is InstanceMirror);
237 Expect.isFalse(metadata5.hasReflectee);
238 Expect.throws(() => metadata5.reflectee, (_) => true);
239 Expect.equals(metadataType.originalDeclaration, metadata5.type);
240 metadata5.getField('data').then((InstanceMirror data) {
241 Expect.isNotNull(data);
242 Expect.isTrue(data.hasReflectee);
243 Expect.equals(1.5, data.reflectee);
244 });
245
246 // @Metadata("Foo")
247 var metadata6 = metadata[6];
248 Expect.isTrue(metadata6 is InstanceMirror);
249 Expect.isFalse(metadata6.hasReflectee);
250 Expect.throws(() => metadata6.reflectee, (_) => true);
251 Expect.equals(metadataType.originalDeclaration, metadata6.type);
252 metadata6.getField('data').then((InstanceMirror data) {
253 Expect.isNotNull(data);
254 Expect.isTrue(data.hasReflectee);
255 Expect.stringEquals("Foo", data.reflectee);
256 });
257
258 // @Metadata(const ["Foo"])
259 var metadata7 = metadata[7];
260 Expect.isTrue(metadata7 is InstanceMirror);
261 Expect.isFalse(metadata7.hasReflectee);
262 Expect.throws(() => metadata7.reflectee, (_) => true);
263 Expect.equals(metadataType.originalDeclaration, metadata7.type);
264 metadata7.getField('data').then((InstanceMirror data) {
265 Expect.isTrue(data is ListInstanceMirror);
266 Expect.isFalse(data.hasReflectee);
267 Expect.throws(() => data.reflectee, (_) => true);
268 ListInstanceMirror listData = data;
269 Expect.equals(1, listData.length);
270 listData[0].then((InstanceMirror element) {
271 Expect.isNotNull(element);
272 Expect.isTrue(element.hasReflectee);
273 Expect.stringEquals("Foo", element.reflectee);
274 });
275 });
276
277 // @Metadata(const {'foo':"Foo"})
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
298 // @metadata
299 var metadata9 = metadata[9];
300 Expect.isTrue(metadata9 is InstanceMirror);
301 Expect.isFalse(metadata9.hasReflectee);
302 Expect.throws(() => metadata9.reflectee, (_) => true);
303 Expect.equals(metadataType.originalDeclaration, metadata9.type);
304 metadata9.getField('data').then((InstanceMirror data) {
305 Expect.isNotNull(data);
306 Expect.isTrue(data.hasReflectee);
307 Expect.isNull(data.reflectee);
308 });
167 } 309 }
168 310
169 // Testing abstract class Bar: 311 // Testing abstract class Bar:
170 // 312 //
171 // abstract class Bar<E> { 313 // abstract class Bar<E> {
172 // 314 //
173 // } 315 // }
174 void testBar(MirrorSystem system, LibraryMirror helperLibrary, 316 void testBar(MirrorSystem system, LibraryMirror helperLibrary,
175 Map<String,TypeMirror> classes) { 317 Map<String,TypeMirror> classes) {
176 var barClass = classes["Bar"]; 318 var barClass = classes["Bar"];
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 380
239 var barInterfaceMembers = barClass.members; 381 var barInterfaceMembers = barClass.members;
240 Expect.isNotNull(barInterfaceMembers, "Declared members map is null"); 382 Expect.isNotNull(barInterfaceMembers, "Declared members map is null");
241 Expect.isTrue(barInterfaceMembers.isEmpty, 383 Expect.isTrue(barInterfaceMembers.isEmpty,
242 "Declared members map is unempty"); 384 "Declared members map is unempty");
243 385
244 var barInterfaceConstructors = barClass.constructors; 386 var barInterfaceConstructors = barClass.constructors;
245 Expect.isNotNull(barInterfaceConstructors, "Constructors map is null"); 387 Expect.isNotNull(barInterfaceConstructors, "Constructors map is null");
246 Expect.isTrue(barInterfaceConstructors.isEmpty, 388 Expect.isTrue(barInterfaceConstructors.isEmpty,
247 "Constructors map is unempty"); 389 "Constructors map is unempty");
390
391 var metadata = barClass.metadata;
392 Expect.isNotNull(metadata);
393 Expect.equals(0, metadata.length);
248 } 394 }
249 395
250 // Testing class Baz: 396 // Testing class Baz:
251 // 397 //
252 // class Baz<E,F extends Foo> implements Bar<E> { 398 // class Baz<E,F extends Foo> implements Bar<E> {
253 // Baz(); 399 // Baz();
254 // const Baz.named(); 400 // const Baz.named();
255 // factory Baz.factory() => new Baz<E,F>(); 401 // factory Baz.factory() => new Baz<E,F>();
256 // 402 //
257 // static method1(e) {} 403 // static method1(e) {}
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after
717 Expect.isFalse(bazClassFactoryConstructor.isRedirectingConstructor); 863 Expect.isFalse(bazClassFactoryConstructor.isRedirectingConstructor);
718 Expect.isTrue(bazClassFactoryConstructor.isFactoryConstructor); 864 Expect.isTrue(bazClassFactoryConstructor.isFactoryConstructor);
719 Expect.stringEquals('Baz.factory', bazClassFactoryConstructor.simpleName); 865 Expect.stringEquals('Baz.factory', bazClassFactoryConstructor.simpleName);
720 Expect.stringEquals('Baz.factory', bazClassFactoryConstructor.displayName); 866 Expect.stringEquals('Baz.factory', bazClassFactoryConstructor.displayName);
721 Expect.stringEquals('mirrors_helper.Baz.Baz.factory', 867 Expect.stringEquals('mirrors_helper.Baz.Baz.factory',
722 bazClassFactoryConstructor.qualifiedName); 868 bazClassFactoryConstructor.qualifiedName);
723 Expect.stringEquals('factory', bazClassFactoryConstructor.constructorName); 869 Expect.stringEquals('factory', bazClassFactoryConstructor.constructorName);
724 870
725 // TODO(johnniwinther): Add more tests of constructors. 871 // TODO(johnniwinther): Add more tests of constructors.
726 // TODO(johnniwinther): Add a test for unnamed factory methods. 872 // TODO(johnniwinther): Add a test for unnamed factory methods.
873
874 var metadata = bazClass.metadata;
875 Expect.isNotNull(metadata);
876 Expect.equals(0, metadata.length);
727 } 877 }
728 878
729 // class _PrivateClass { 879 // class _PrivateClass {
730 // var _privateField; 880 // var _privateField;
731 // get _privateGetter => _privateField; 881 // get _privateGetter => _privateField;
732 // void set _privateSetter(value) => _privateField = value; 882 // void set _privateSetter(value) => _privateField = value;
733 // void _privateMethod() {} 883 // void _privateMethod() {}
734 // _PrivateClass._privateConstructor(); 884 // _PrivateClass._privateConstructor();
735 // factory _PrivateClass._privateFactoryConstructor() => new _PrivateClass(); 885 // factory _PrivateClass._privateFactoryConstructor() => new _PrivateClass();
736 // } 886 // }
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 var privateFactoryConstructor = 932 var privateFactoryConstructor =
783 privateClass.members['_PrivateClass._privateFactoryConstructor']; 933 privateClass.members['_PrivateClass._privateFactoryConstructor'];
784 Expect.isNotNull(privateFactoryConstructor); 934 Expect.isNotNull(privateFactoryConstructor);
785 Expect.isTrue(privateFactoryConstructor is MethodMirror); 935 Expect.isTrue(privateFactoryConstructor is MethodMirror);
786 Expect.isTrue(privateFactoryConstructor.isConstructor); 936 Expect.isTrue(privateFactoryConstructor.isConstructor);
787 Expect.isTrue(privateFactoryConstructor.isPrivate); 937 Expect.isTrue(privateFactoryConstructor.isPrivate);
788 Expect.isFalse(privateFactoryConstructor.isConstConstructor); 938 Expect.isFalse(privateFactoryConstructor.isConstConstructor);
789 Expect.isFalse(privateFactoryConstructor.isRedirectingConstructor); 939 Expect.isFalse(privateFactoryConstructor.isRedirectingConstructor);
790 Expect.isFalse(privateFactoryConstructor.isGenerativeConstructor); 940 Expect.isFalse(privateFactoryConstructor.isGenerativeConstructor);
791 Expect.isTrue(privateFactoryConstructor.isFactoryConstructor); 941 Expect.isTrue(privateFactoryConstructor.isFactoryConstructor);
942
943 var metadata = privateClass.metadata;
944 Expect.isNotNull(metadata);
945 Expect.equals(0, metadata.length);
792 } 946 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/mirrors_helper.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698