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

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

Issue 63363003: Cascaded mirror removal revert. (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
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 test.reflect_model_test; 5 library test.reflect_model_test;
6 6
7 import 'dart:mirrors'; 7 import 'dart:mirrors';
8 8
9 import 'package:expect/expect.dart'; 9 import 'package:expect/expect.dart';
10 10
11 import 'model.dart'; 11 import 'model.dart';
12 import 'stringify.dart'; 12 import 'stringify.dart';
13 13
14 isNoSuchMethodError(e) => e is NoSuchMethodError; 14 isNoSuchMethodError(e) => e is NoSuchMethodError;
15 15
16 variablesOf(ClassMirror cm) {
17 var result = new Map();
18 cm.declarations.forEach((k,v) {
19 if (v is VariableMirror) result[k] = v;
20 });
21 return result;
22 }
23
24 gettersOf(ClassMirror cm) {
25 var result = new Map();
26 cm.declarations.forEach((k,v) {
27 if (v is MethodMirror && v.isGetter) result[k] = v;
28 });
29 return result;
30 }
31
32 settersOf(ClassMirror cm) {
33 var result = new Map();
34 cm.declarations.forEach((k,v) {
35 if (v is MethodMirror && v.isSetter) result[k] = v;
36 });
37 return result;
38 }
39
40 methodsOf(ClassMirror cm) {
41 var result = new Map();
42 cm.declarations.forEach((k,v) {
43 if (v is MethodMirror && v.isRegularMethod) result[k] = v;
44 });
45 return result;
46 }
47
48 main() { 16 main() {
49 var unnamed = new Symbol(''); 17 var unnamed = new Symbol('');
50 var field = new Symbol('field'); 18 var field = new Symbol('field');
51 var instanceMethod = new Symbol('instanceMethod'); 19 var instanceMethod = new Symbol('instanceMethod');
52 var accessor = new Symbol('accessor'); 20 var accessor = new Symbol('accessor');
53 var aMethod = new Symbol('aMethod'); 21 var aMethod = new Symbol('aMethod');
54 var bMethod = new Symbol('bMethod'); 22 var bMethod = new Symbol('bMethod');
55 var cMethod = new Symbol('cMethod'); 23 var cMethod = new Symbol('cMethod');
56 24
57 var aClass = reflectClass(A); 25 var aClass = reflectClass(A);
58 var bClass = reflectClass(B); 26 var bClass = reflectClass(B);
59 var cClass = reflectClass(C); 27 var cClass = reflectClass(C);
60 var a = aClass.newInstance(unnamed, []); 28 var a = aClass.newInstance(unnamed, []);
61 var b = bClass.newInstance(unnamed, []); 29 var b = bClass.newInstance(unnamed, []);
62 var c = cClass.newInstance(unnamed, []); 30 var c = cClass.newInstance(unnamed, []);
63 31
64 expect('{field: Variable(s(field) in s(A))}', variablesOf(aClass)); 32 expect('{field: Variable(s(field) in s(A))}', aClass.variables);
65 expect('{}', variablesOf(bClass)); 33 expect('{}', bClass.variables);
66 expect('{}', variablesOf(cClass)); 34 expect('{}', cClass.variables);
67 35
68 Expect.isNull(a.getField(field).reflectee); 36 Expect.isNull(a.getField(field).reflectee);
69 Expect.equals('B:get field', b.getField(field).reflectee); 37 Expect.equals('B:get field', b.getField(field).reflectee);
70 Expect.equals('B:get field', c.getField(field).reflectee); 38 Expect.equals('B:get field', c.getField(field).reflectee);
71 39
72 Expect.equals(42, a.setField(field, 42).reflectee); 40 Expect.equals(42, a.setField(field, 42).reflectee);
73 Expect.equals(87, b.setField(field, 87).reflectee); 41 Expect.equals(87, b.setField(field, 87).reflectee);
74 Expect.equals(89, c.setField(field, 89).reflectee); 42 Expect.equals(89, c.setField(field, 89).reflectee);
75 43
76 Expect.equals(42, a.getField(field).reflectee); 44 Expect.equals(42, a.getField(field).reflectee);
77 Expect.equals('B:get field', b.getField(field).reflectee); 45 Expect.equals('B:get field', b.getField(field).reflectee);
78 Expect.equals('B:get field', c.getField(field).reflectee); 46 Expect.equals('B:get field', c.getField(field).reflectee);
79 Expect.equals(89, fieldC); 47 Expect.equals(89, fieldC);
80 48
81 expect('{accessor: Method(s(accessor) in s(A), getter)' 49 expect('{accessor: Method(s(accessor) in s(A), getter)'
82 '}', 50 '}',
83 gettersOf(aClass)); 51 aClass.getters);
84 expect('{accessor: Method(s(accessor) in s(B), getter)' 52 expect('{accessor: Method(s(accessor) in s(B), getter)'
85 ', field: Method(s(field) in s(B), getter)}', 53 ', field: Method(s(field) in s(B), getter)}',
86 gettersOf(bClass)); 54 bClass.getters);
87 expect('{accessor: Method(s(accessor) in s(C), getter)}', 55 expect('{accessor: Method(s(accessor) in s(C), getter)}',
88 gettersOf(cClass)); 56 cClass.getters);
89 57
90 expect('{accessor=: Method(s(accessor=) in s(A), setter)' 58 expect('{accessor=: Method(s(accessor=) in s(A), setter)'
91 '}', 59 '}',
92 settersOf(aClass)); 60 aClass.setters);
93 expect('{accessor=: Method(s(accessor=) in s(B), setter)}', 61 expect('{accessor=: Method(s(accessor=) in s(B), setter)}',
94 settersOf(bClass)); 62 bClass.setters);
95 expect('{accessor=: Method(s(accessor=) in s(C), setter)' 63 expect('{accessor=: Method(s(accessor=) in s(C), setter)'
96 ', field=: Method(s(field=) in s(C), setter)}', 64 ', field=: Method(s(field=) in s(C), setter)}',
97 settersOf(cClass)); 65 cClass.setters);
98 66
99 Expect.equals('A:instanceMethod(7)', a.invoke(instanceMethod, [7]).reflectee); 67 Expect.equals('A:instanceMethod(7)', a.invoke(instanceMethod, [7]).reflectee);
100 Expect.equals('B:instanceMethod(9)', b.invoke(instanceMethod, [9]).reflectee); 68 Expect.equals('B:instanceMethod(9)', b.invoke(instanceMethod, [9]).reflectee);
101 Expect.equals( 69 Expect.equals(
102 'C:instanceMethod(13)', c.invoke(instanceMethod, [13]).reflectee); 70 'C:instanceMethod(13)', c.invoke(instanceMethod, [13]).reflectee);
103 71
104 expect( 72 expect(
105 '{aMethod: Method(s(aMethod) in s(A))' 73 '{aMethod: Method(s(aMethod) in s(A))'
106 ', instanceMethod: Method(s(instanceMethod) in s(A))}', 74 ', instanceMethod: Method(s(instanceMethod) in s(A))}',
107 methodsOf(aClass)); 75 aClass.methods);
108 76
109 expect( 77 expect(
110 '{bMethod: Method(s(bMethod) in s(B))' 78 '{bMethod: Method(s(bMethod) in s(B))'
111 ', instanceMethod: Method(s(instanceMethod) in s(B))}', 79 ', instanceMethod: Method(s(instanceMethod) in s(B))}',
112 methodsOf(bClass)); 80 bClass.methods);
113 expect( 81 expect(
114 '{cMethod: Method(s(cMethod) in s(C))' 82 '{cMethod: Method(s(cMethod) in s(C))'
115 ', instanceMethod: Method(s(instanceMethod) in s(C))}', 83 ', instanceMethod: Method(s(instanceMethod) in s(C))}',
116 methodsOf(cClass)); 84 cClass.methods);
117 85
118 Expect.equals('A:get accessor', a.getField(accessor).reflectee); 86 Expect.equals('A:get accessor', a.getField(accessor).reflectee);
119 Expect.equals('B:get accessor', b.getField(accessor).reflectee); 87 Expect.equals('B:get accessor', b.getField(accessor).reflectee);
120 Expect.equals('C:get accessor', c.getField(accessor).reflectee); 88 Expect.equals('C:get accessor', c.getField(accessor).reflectee);
121 89
122 Expect.equals('foo', a.setField(accessor, 'foo').reflectee); 90 Expect.equals('foo', a.setField(accessor, 'foo').reflectee);
123 Expect.equals('bar', b.setField(accessor, 'bar').reflectee); 91 Expect.equals('bar', b.setField(accessor, 'bar').reflectee);
124 Expect.equals('baz', c.setField(accessor, 'baz').reflectee); 92 Expect.equals('baz', c.setField(accessor, 'baz').reflectee);
125 93
126 Expect.equals('foo', accessorA); 94 Expect.equals('foo', accessorA);
127 Expect.equals('bar', accessorB); 95 Expect.equals('bar', accessorB);
128 Expect.equals('baz', accessorC); 96 Expect.equals('baz', accessorC);
129 97
130 Expect.equals('aMethod', a.invoke(aMethod, []).reflectee); 98 Expect.equals('aMethod', a.invoke(aMethod, []).reflectee);
131 Expect.equals('aMethod', b.invoke(aMethod, []).reflectee); 99 Expect.equals('aMethod', b.invoke(aMethod, []).reflectee);
132 Expect.equals('aMethod', c.invoke(aMethod, []).reflectee); 100 Expect.equals('aMethod', c.invoke(aMethod, []).reflectee);
133 101
134 Expect.throws(() { a.invoke(bMethod, []); }, isNoSuchMethodError); 102 Expect.throws(() { a.invoke(bMethod, []); }, isNoSuchMethodError);
135 Expect.equals('bMethod', b.invoke(bMethod, []).reflectee); 103 Expect.equals('bMethod', b.invoke(bMethod, []).reflectee);
136 Expect.equals('bMethod', c.invoke(bMethod, []).reflectee); 104 Expect.equals('bMethod', c.invoke(bMethod, []).reflectee);
137 105
138 Expect.throws(() { a.invoke(cMethod, []); }, isNoSuchMethodError); 106 Expect.throws(() { a.invoke(cMethod, []); }, isNoSuchMethodError);
139 Expect.throws(() { b.invoke(cMethod, []); }, isNoSuchMethodError); 107 Expect.throws(() { b.invoke(cMethod, []); }, isNoSuchMethodError);
140 Expect.equals('cMethod', c.invoke(cMethod, []).reflectee); 108 Expect.equals('cMethod', c.invoke(cMethod, []).reflectee);
141 } 109 }
OLDNEW
« no previous file with comments | « tests/lib/mirrors/private_symbol_test.dart ('k') | tests/lib/mirrors/reflect_runtime_type_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698