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

Side by Side Diff: tests/lib/mirrors/mirrors_test.dart

Issue 23460050: Mirror removals: async invoke, mirrorSystemOf(port), Mirror.mirrors. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 1 month 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/lib/mirrors/invoke_test.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) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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 library MirrorsTest; 5 library MirrorsTest;
6 6
7 import 'dart:mirrors'; 7 import 'dart:mirrors';
8 8
9 import '../../light_unittest.dart'; 9 import '../../light_unittest.dart';
10 10
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 56
57 var libMirror = classMirror.owner; 57 var libMirror = classMirror.owner;
58 expect(libMirror.invoke(#u, ['A', 'B', instance]).reflectee, 58 expect(libMirror.invoke(#u, ['A', 'B', instance]).reflectee,
59 equals({"a": 'A', "b":'B', "c": instance})); 59 equals({"a": 'A', "b":'B', "c": instance}));
60 expect(() => libMirror.invoke(#notDefined, []).reflectee, 60 expect(() => libMirror.invoke(#notDefined, []).reflectee,
61 throws); 61 throws);
62 expect(() => libMirror.invoke(#u, []).reflectee, 62 expect(() => libMirror.invoke(#u, []).reflectee,
63 throws); // Wrong arity. 63 throws); // Wrong arity.
64 } 64 }
65 65
66 testInstanceFieldAccess(mirrors) {
67 var instance = new Class();
68 var instMirror = reflect(instance);
69
70 instMirror.setFieldAsync(#field, 44);
71 instMirror.getFieldAsync(#field).then(
72 expectAsync1((resultMirror) {
73 expect(resultMirror.reflectee, equals(44));
74 expect(instance.field, equals(44));
75 }));
76 }
77
78 /// In dart2js, lists, numbers, and other objects are treated special 66 /// In dart2js, lists, numbers, and other objects are treated special
79 /// and their methods are invoked through a techique called interceptors. 67 /// and their methods are invoked through a techique called interceptors.
80 testIntercepted(mirrors) { 68 testIntercepted(mirrors) {
81 var instance = 1; 69 var instance = 1;
82 var instMirror = reflect(instance); 70 var instMirror = reflect(instance);
83 71
84 expect(instMirror.invoke(#toString, []).reflectee, 72 expect(instMirror.invoke(#toString, []).reflectee,
85 equals('1')); 73 equals('1'));
86 74
87 instance = []; 75 instance = [];
(...skipping 20 matching lines...) Expand all
108 var fieldMirror = classMirror.members[#field]; 96 var fieldMirror = classMirror.members[#field];
109 var future; 97 var future;
110 98
111 expect(fieldMirror is VariableMirror, isTrue); 99 expect(fieldMirror is VariableMirror, isTrue);
112 expect(fieldMirror.type, equals(mirrors.dynamicType)); 100 expect(fieldMirror.type, equals(mirrors.dynamicType));
113 101
114 libMirror.setField(#topLevelField, [91]); 102 libMirror.setField(#topLevelField, [91]);
115 expect(libMirror.getField(#topLevelField).reflectee, 103 expect(libMirror.getField(#topLevelField).reflectee,
116 equals([91])); 104 equals([91]));
117 expect(topLevelField, equals([91])); 105 expect(topLevelField, equals([91]));
118
119 libMirror.setFieldAsync(#topLevelField, 42);
120 future = libMirror.getFieldAsync(#topLevelField);
121 future.then(expectAsync1((resultMirror) {
122 expect(resultMirror.reflectee, equals(42));
123 expect(topLevelField, equals(42));
124 }));
125
126 classMirror.setFieldAsync(#staticField, 43);
127 future = classMirror.getFieldAsync(#staticField);
128 future.then(expectAsync1((resultMirror) {
129 expect(resultMirror.reflectee, equals(43));
130 expect(Class.staticField, equals(43));
131 }));
132
133 instMirror.setFieldAsync(#field, 44);
134 future = instMirror.getFieldAsync(#field);
135 future.then(expectAsync1((resultMirror) {
136 expect(resultMirror.reflectee, equals(44));
137 expect(instance.field, equals(44));
138 }));
139 } 106 }
140 107
141 testClosureMirrors(mirrors) { 108 testClosureMirrors(mirrors) {
142 // TODO(ahe): Test optional parameters (named or not). 109 // TODO(ahe): Test optional parameters (named or not).
143 var closure = (x, y, z) { return x + y + z; }; 110 var closure = (x, y, z) { return x + y + z; };
144 111
145 var mirror = reflect(closure); 112 var mirror = reflect(closure);
146 expect(mirror is ClosureMirror, equals(true)); 113 expect(mirror is ClosureMirror, equals(true));
147 114
148 var funcMirror = mirror.function; 115 var funcMirror = mirror.function;
149 expect(funcMirror is MethodMirror, equals(true)); 116 expect(funcMirror is MethodMirror, equals(true));
150 expect(funcMirror.parameters.length, equals(3)); 117 expect(funcMirror.parameters.length, equals(3));
151 118
152 expect(mirror.apply([7, 8, 9]).reflectee, equals(24)); 119 expect(mirror.apply([7, 8, 9]).reflectee, equals(24));
153
154 var future = mirror.applyAsync([2, 4, 8]);
155 future.then(expectAsync1((resultMirror) {
156 expect(resultMirror.reflectee, equals(14));
157 }));
158 } 120 }
159 121
160 testInvokeConstructor(mirrors) { 122 testInvokeConstructor(mirrors) {
161 var classMirror = reflectClass(Class); 123 var classMirror = reflectClass(Class);
162 124
163 var instanceMirror = classMirror.newInstance(const Symbol(''),[]); 125 var instanceMirror = classMirror.newInstance(const Symbol(''),[]);
164 expect(instanceMirror.reflectee is Class, equals(true)); 126 expect(instanceMirror.reflectee is Class, equals(true));
165 expect(instanceMirror.reflectee.field, equals("default value")); 127 expect(instanceMirror.reflectee.field, equals("default value"));
166 128
167 instanceMirror = classMirror.newInstance(#withInitialValue, 129 instanceMirror = classMirror.newInstance(#withInitialValue,
(...skipping 14 matching lines...) Expand all
182 144
183 instanceMirror = classMirror.newInstance(#faktory, 145 instanceMirror = classMirror.newInstance(#faktory,
184 [9]); 146 [9]);
185 expect(instanceMirror.reflectee is Class, equals(true)); 147 expect(instanceMirror.reflectee is Class, equals(true));
186 expect(instanceMirror.reflectee.field, equals(27)); 148 expect(instanceMirror.reflectee.field, equals(27));
187 149
188 instanceMirror = classMirror.newInstance(#redirectingFactory, 150 instanceMirror = classMirror.newInstance(#redirectingFactory,
189 [10]); 151 [10]);
190 expect(instanceMirror.reflectee is Class, equals(true)); 152 expect(instanceMirror.reflectee is Class, equals(true));
191 expect(instanceMirror.reflectee.field, equals(30)); 153 expect(instanceMirror.reflectee.field, equals(30));
192
193
194 var future = classMirror.newInstanceAsync(const Symbol(''), []);
195 future.then(expectAsync1((resultMirror) {
196 var instance = resultMirror.reflectee;
197 expect(instance is Class, equals(true));
198 expect(instance.field, equals("default value"));
199 }));
200
201 future = classMirror.newInstanceAsync(#withInitialValue, [45]);
202 future.then(expectAsync1((resultMirror) {
203 var instance = resultMirror.reflectee;
204 expect(instance is Class, equals(true));
205 expect(instance.field, equals(45));
206 }));
207 } 154 }
208 155
209 testReflectClass(mirrors) { 156 testReflectClass(mirrors) {
210 var classMirror = reflectClass(Class); 157 var classMirror = reflectClass(Class);
211 expect(classMirror is ClassMirror, equals(true)); 158 expect(classMirror is ClassMirror, equals(true));
212 var symbolClassMirror = reflectClass(Symbol); 159 var symbolClassMirror = reflectClass(Symbol);
213 var symbolMirror = symbolClassMirror.newInstance(const Symbol(''), 160 var symbolMirror = symbolClassMirror.newInstance(const Symbol(''),
214 ['withInitialValue']); 161 ['withInitialValue']);
215 var objectMirror = classMirror.newInstance(symbolMirror.reflectee,[1234]); 162 var objectMirror = classMirror.newInstance(symbolMirror.reflectee,[1234]);
216 expect(objectMirror.reflectee is Class, equals(true)); 163 expect(objectMirror.reflectee is Class, equals(true));
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 testLibraryUri(var value, bool check(Uri)) { 205 testLibraryUri(var value, bool check(Uri)) {
259 var valueMirror = reflect(value); 206 var valueMirror = reflect(value);
260 ClassMirror valueClass = valueMirror.type; 207 ClassMirror valueClass = valueMirror.type;
261 LibraryMirror valueLibrary = valueClass.owner; 208 LibraryMirror valueLibrary = valueClass.owner;
262 expect(check(valueLibrary.uri), isTrue); 209 expect(check(valueLibrary.uri), isTrue);
263 } 210 }
264 211
265 main() { 212 main() {
266 var mirrors = currentMirrorSystem(); 213 var mirrors = currentMirrorSystem();
267 test("Test reflective method invocation", () { testInvoke(mirrors); }); 214 test("Test reflective method invocation", () { testInvoke(mirrors); });
268 test("Test instance field access", () { testInstanceFieldAccess(mirrors); });
269 test('Test intercepted objects', () { testIntercepted(mirrors); }); 215 test('Test intercepted objects', () { testIntercepted(mirrors); });
270 test("Test field access", () { testFieldAccess(mirrors); }); 216 test("Test field access", () { testFieldAccess(mirrors); });
271 test("Test closure mirrors", () { testClosureMirrors(mirrors); }); 217 test("Test closure mirrors", () { testClosureMirrors(mirrors); });
272 test("Test invoke constructor", () { testInvokeConstructor(mirrors); }); 218 test("Test invoke constructor", () { testInvokeConstructor(mirrors); });
273 test("Test current library uri", () { 219 test("Test current library uri", () {
274 testLibraryUri(new Class(), 220 testLibraryUri(new Class(),
275 (Uri uri) => uri.path.endsWith('/mirrors_test.dart')); 221 (Uri uri) => uri.path.endsWith('/mirrors_test.dart'));
276 }); 222 });
277 test("Test dart library uri", () { 223 test("Test dart library uri", () {
278 testLibraryUri("test", (Uri uri) => uri == Uri.parse('dart:core')); 224 testLibraryUri("test", (Uri uri) => uri == Uri.parse('dart:core'));
279 }); 225 });
280 test("Test simple and qualifiedName", () { testNames(mirrors); }); 226 test("Test simple and qualifiedName", () { testNames(mirrors); });
281 test("Test reflect type", () { testReflectClass(mirrors); }); 227 test("Test reflect type", () { testReflectClass(mirrors); });
282 } 228 }
OLDNEW
« no previous file with comments | « tests/lib/mirrors/invoke_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698