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

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

Issue 2770063002: Revert "Format all multitests" (Closed)
Patch Set: Created 3 years, 9 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
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.invoke_named_test; 5 library test.invoke_named_test;
6 6
7 import 'dart:mirrors'; 7 import 'dart:mirrors';
8 8
9 import 'dart:async' show Future; 9 import 'dart:async' show Future;
10 10
11 import 'package:expect/expect.dart'; 11 import 'package:expect/expect.dart';
12 import 'invoke_test.dart'; 12 import 'invoke_test.dart';
13 13
14 // TODO(ahe): Remove this variable (http://dartbug.com/12863). 14 // TODO(ahe): Remove this variable (http://dartbug.com/12863).
15 bool isDart2js = false; 15 bool isDart2js = false;
16 16
17 class C { 17 class C {
18 a(a, {b: 'B', c}) => "$a-$b-$c"; 18 a(a, {b:'B', c}) => "$a-$b-$c";
19 b({a: 'A', b, c}) => "$a-$b-$c"; 19 b({a:'A', b, c}) => "$a-$b-$c";
20 c(a, [b, c = 'C']) => "$a-$b-$c"; 20 c(a, [b, c='C']) => "$a-$b-$c";
21 d([a, b = 'B', c = 'C']) => "$a-$b-$c"; 21 d([a, b='B', c='C']) => "$a-$b-$c";
22 e(a, b, c) => "$a-$b-$c"; 22 e(a, b, c) => "$a-$b-$c";
23 } 23 }
24 24
25 class D { 25 class D {
26 static a(a, {b: 'B', c}) => "$a-$b-$c"; 26 static a(a, {b:'B', c}) => "$a-$b-$c";
27 static b({a: 'A', b, c}) => "$a-$b-$c"; 27 static b({a:'A', b, c}) => "$a-$b-$c";
28 static c(a, [b, c = 'C']) => "$a-$b-$c"; 28 static c(a, [b, c='C']) => "$a-$b-$c";
29 static d([a, b = 'B', c = 'C']) => "$a-$b-$c"; 29 static d([a, b='B', c='C']) => "$a-$b-$c";
30 static e(a, b, c) => "$a-$b-$c"; 30 static e(a, b, c) => "$a-$b-$c";
31 } 31 }
32 32
33 class E { 33 class E {
34 var field; 34 var field;
35 E(a, {b: 'B', c}) : this.field = "$a-$b-$c"; 35 E(a, {b:'B', c}) : this.field = "$a-$b-$c";
36 E.b({a: 'A', b, c}) : this.field = "$a-$b-$c"; 36 E.b({a:'A', b, c}) : this.field = "$a-$b-$c";
37 E.c(a, [b, c = 'C']) : this.field = "$a-$b-$c"; 37 E.c(a, [b, c='C']) : this.field = "$a-$b-$c";
38 E.d([a, b = 'B', c = 'C']) : this.field = "$a-$b-$c"; 38 E.d([a, b='B', c='C']) : this.field = "$a-$b-$c";
39 E.e(a, b, c) : this.field = "$a-$b-$c"; 39 E.e(a, b, c) : this.field = "$a-$b-$c";
40 } 40 }
41 41
42 a(a, {b: 'B', c}) => "$a-$b-$c"; 42 a(a, {b:'B', c}) => "$a-$b-$c";
43 b({a: 'A', b, c}) => "$a-$b-$c"; 43 b({a:'A', b, c}) => "$a-$b-$c";
44 c(a, [b, c = 'C']) => "$a-$b-$c"; 44 c(a, [b, c='C']) => "$a-$b-$c";
45 d([a, b = 'B', c = 'C']) => "$a-$b-$c"; 45 d([a, b='B', c='C']) => "$a-$b-$c";
46 e(a, b, c) => "$a-$b-$c"; 46 e(a, b, c) => "$a-$b-$c";
47 47
48 testSyncInvoke(ObjectMirror om) { 48 testSyncInvoke(ObjectMirror om) {
49 InstanceMirror result; 49 InstanceMirror result;
50 50
51 result = om.invoke(const Symbol('a'), ['X']); 51 result = om.invoke(const Symbol('a'), ['X']);
52 Expect.equals('X-B-null', result.reflectee); 52 Expect.equals('X-B-null', result.reflectee);
53 result = om.invoke(const Symbol('a'), ['X'], {const Symbol('b'): 'Y'}); 53 result = om.invoke(const Symbol('a'), ['X'], {const Symbol('b') : 'Y'});
54 Expect.equals('X-Y-null', result.reflectee); 54 Expect.equals('X-Y-null', result.reflectee);
55 result = om.invoke(const Symbol('a'), ['X'], 55 result = om.invoke(const Symbol('a'), ['X'], {const Symbol('c') : 'Z', const S ymbol('b') : 'Y'});
56 {const Symbol('c'): 'Z', const Symbol('b'): 'Y'});
57 Expect.equals('X-Y-Z', result.reflectee); 56 Expect.equals('X-Y-Z', result.reflectee);
58 Expect.throws(() => om.invoke(const Symbol('a'), []), isNoSuchMethodError, 57 Expect.throws(() => om.invoke(const Symbol('a'), []),
59 'Insufficient positional arguments'); 58 isNoSuchMethodError,
59 'Insufficient positional arguments');
60 Expect.throws(() => om.invoke(const Symbol('a'), ['X', 'Y']), 60 Expect.throws(() => om.invoke(const Symbol('a'), ['X', 'Y']),
61 isNoSuchMethodError, 'Extra positional arguments'); 61 isNoSuchMethodError,
62 Expect.throws( 62 'Extra positional arguments');
63 () => om.invoke(const Symbol('a'), ['X'], {const Symbol('undef'): 'Y'}), 63 Expect.throws(() => om.invoke(const Symbol('a'), ['X'], {const Symbol('undef') : 'Y'}),
64 isNoSuchMethodError, 64 isNoSuchMethodError,
65 'Unmatched named argument'); 65 'Unmatched named argument');
66 66
67 result = om.invoke(const Symbol('b'), []); 67 result = om.invoke(const Symbol('b'), []);
68 Expect.equals('A-null-null', result.reflectee); 68 Expect.equals('A-null-null', result.reflectee);
69 result = om.invoke(const Symbol('b'), [], {const Symbol('a'): 'X'}); 69 result = om.invoke(const Symbol('b'), [], {const Symbol('a') : 'X'});
70 Expect.equals('X-null-null', result.reflectee); 70 Expect.equals('X-null-null', result.reflectee);
71 result = om.invoke(const Symbol('b'), [], 71 result = om.invoke(const Symbol('b'), [], {const Symbol('b') :'Y', const Symbo l('c') :'Z', const Symbol('a') :'X'});
72 {const Symbol('b'): 'Y', const Symbol('c'): 'Z', const Symbol('a'): 'X'});
73 Expect.equals('X-Y-Z', result.reflectee); 72 Expect.equals('X-Y-Z', result.reflectee);
74 Expect.throws(() => om.invoke(const Symbol('b'), ['X']), isNoSuchMethodError, 73 Expect.throws(() => om.invoke(const Symbol('b'), ['X']),
75 'Extra positional arguments'); 74 isNoSuchMethodError,
76 Expect.throws( 75 'Extra positional arguments');
77 () => om.invoke(const Symbol('b'), ['X'], {const Symbol('undef'): 'Y'}), 76 Expect.throws(() => om.invoke(const Symbol('b'), ['X'], {const Symbol('undef') : 'Y'}),
78 isNoSuchMethodError, 77 isNoSuchMethodError,
79 'Unmatched named argument'); 78 'Unmatched named argument');
80 79
81 result = om.invoke(const Symbol('c'), ['X']); 80 result = om.invoke(const Symbol('c'), ['X']);
82 Expect.equals('X-null-C', result.reflectee); 81 Expect.equals('X-null-C', result.reflectee);
83 result = om.invoke(const Symbol('c'), ['X', 'Y']); 82 result = om.invoke(const Symbol('c'), ['X', 'Y']);
84 Expect.equals('X-Y-C', result.reflectee); 83 Expect.equals('X-Y-C', result.reflectee);
85 result = om.invoke(const Symbol('c'), ['X', 'Y', 'Z']); 84 result = om.invoke(const Symbol('c'), ['X', 'Y', 'Z']);
86 Expect.equals('X-Y-Z', result.reflectee); 85 Expect.equals('X-Y-Z', result.reflectee);
87 Expect.throws(() => om.invoke(const Symbol('c'), []), isNoSuchMethodError, 86 Expect.throws(() => om.invoke(const Symbol('c'), []),
88 'Insufficient positional arguments'); 87 isNoSuchMethodError,
88 'Insufficient positional arguments');
89 Expect.throws(() => om.invoke(const Symbol('c'), ['X', 'Y', 'Z', 'W']), 89 Expect.throws(() => om.invoke(const Symbol('c'), ['X', 'Y', 'Z', 'W']),
90 isNoSuchMethodError, 'Extra positional arguments'); 90 isNoSuchMethodError,
91 Expect.throws( 91 'Extra positional arguments');
92 () => om.invoke(const Symbol('c'), ['X'], {const Symbol('undef'): 'Y'}), 92 Expect.throws(() => om.invoke(const Symbol('c'), ['X'], {const Symbol('undef') : 'Y'}),
93 isNoSuchMethodError, 93 isNoSuchMethodError,
94 'Unmatched named argument'); 94 'Unmatched named argument');
95 95
96 result = om.invoke(const Symbol('d'), []); 96 result = om.invoke(const Symbol('d'), []);
97 Expect.equals('null-B-C', result.reflectee); 97 Expect.equals('null-B-C', result.reflectee);
98 result = om.invoke(const Symbol('d'), ['X']); 98 result = om.invoke(const Symbol('d'), ['X']);
99 Expect.equals('X-B-C', result.reflectee); 99 Expect.equals('X-B-C', result.reflectee);
100 result = om.invoke(const Symbol('d'), ['X', 'Y']); 100 result = om.invoke(const Symbol('d'), ['X', 'Y']);
101 Expect.equals('X-Y-C', result.reflectee); 101 Expect.equals('X-Y-C', result.reflectee);
102 result = om.invoke(const Symbol('d'), ['X', 'Y', 'Z']); 102 result = om.invoke(const Symbol('d'), ['X', 'Y', 'Z']);
103 Expect.equals('X-Y-Z', result.reflectee); 103 Expect.equals('X-Y-Z', result.reflectee);
104 Expect.throws(() => om.invoke(const Symbol('d'), ['X', 'Y', 'Z', 'W']), 104 Expect.throws(() => om.invoke(const Symbol('d'), ['X', 'Y', 'Z', 'W']),
105 isNoSuchMethodError, 'Extra positional arguments'); 105 isNoSuchMethodError,
106 Expect.throws( 106 'Extra positional arguments');
107 () => om.invoke(const Symbol('d'), ['X'], {const Symbol('undef'): 'Y'}), 107 Expect.throws(() => om.invoke(const Symbol('d'), ['X'], {const Symbol('undef') : 'Y'}),
108 isNoSuchMethodError, 108 isNoSuchMethodError,
109 'Unmatched named argument'); 109 'Unmatched named argument');
110 110
111 result = om.invoke(const Symbol('e'), ['X', 'Y', 'Z']); 111 result = om.invoke(const Symbol('e'), ['X', 'Y', 'Z']);
112 Expect.equals('X-Y-Z', result.reflectee); 112 Expect.equals('X-Y-Z', result.reflectee);
113 Expect.throws(() => om.invoke(const Symbol('e'), ['X']), isNoSuchMethodError, 113 Expect.throws(() => om.invoke(const Symbol('e'), ['X']),
114 'Insufficient positional arguments'); 114 isNoSuchMethodError,
115 'Insufficient positional arguments');
115 Expect.throws(() => om.invoke(const Symbol('e'), ['X', 'Y', 'Z', 'W']), 116 Expect.throws(() => om.invoke(const Symbol('e'), ['X', 'Y', 'Z', 'W']),
116 isNoSuchMethodError, 'Extra positional arguments'); 117 isNoSuchMethodError,
117 Expect.throws( 118 'Extra positional arguments');
118 () => om.invoke(const Symbol('e'), ['X'], {const Symbol('undef'): 'Y'}), 119 Expect.throws(() => om.invoke(const Symbol('e'), ['X'], {const Symbol('undef') : 'Y'}),
119 isNoSuchMethodError, 120 isNoSuchMethodError,
120 'Unmatched named argument'); 121 'Unmatched named argument');
121 } 122 }
122 123
123 testSyncNewInstance() { 124 testSyncNewInstance() {
124 ClassMirror cm = reflectClass(E); 125 ClassMirror cm = reflectClass(E);
125 InstanceMirror result; 126 InstanceMirror result;
126 127
127 result = cm.newInstance(const Symbol(''), ['X']); 128 result = cm.newInstance(const Symbol(''), ['X']);
128 Expect.equals('X-B-null', result.reflectee.field); 129 Expect.equals('X-B-null', result.reflectee.field);
129 result = cm.newInstance(const Symbol(''), ['X'], {const Symbol('b'): 'Y'}); 130 result = cm.newInstance(const Symbol(''), ['X'], {const Symbol('b') : 'Y'});
130 Expect.equals('X-Y-null', result.reflectee.field); 131 Expect.equals('X-Y-null', result.reflectee.field);
131 result = cm.newInstance(const Symbol(''), ['X'], 132 result = cm.newInstance(const Symbol(''), ['X'], {const Symbol('c') : 'Z', con st Symbol('b') : 'Y'});
132 {const Symbol('c'): 'Z', const Symbol('b'): 'Y'});
133 Expect.equals('X-Y-Z', result.reflectee.field); 133 Expect.equals('X-Y-Z', result.reflectee.field);
134 Expect.throws(() => cm.newInstance(const Symbol(''), []), isNoSuchMethodError, 134 Expect.throws(() => cm.newInstance(const Symbol(''), []),
135 'Insufficient positional arguments'); 135 isNoSuchMethodError,
136 'Insufficient positional arguments');
136 Expect.throws(() => cm.newInstance(const Symbol(''), ['X', 'Y']), 137 Expect.throws(() => cm.newInstance(const Symbol(''), ['X', 'Y']),
137 isNoSuchMethodError, 'Extra positional arguments'); 138 isNoSuchMethodError,
138 Expect.throws( 139 'Extra positional arguments');
139 () => 140 Expect.throws(() => cm.newInstance(const Symbol(''), ['X'], {const Symbol('und ef') : 'Y'}),
140 cm.newInstance(const Symbol(''), ['X'], {const Symbol('undef'): 'Y'}), 141 isNoSuchMethodError,
141 isNoSuchMethodError, 142 'Unmatched named argument');
142 'Unmatched named argument');
143 143
144 result = cm.newInstance(const Symbol('b'), []); 144 result = cm.newInstance(const Symbol('b'), []);
145 Expect.equals('A-null-null', result.reflectee.field); 145 Expect.equals('A-null-null', result.reflectee.field);
146 result = cm.newInstance(const Symbol('b'), [], {const Symbol('a'): 'X'}); 146 result = cm.newInstance(const Symbol('b'), [], {const Symbol('a') : 'X'});
147 Expect.equals('X-null-null', result.reflectee.field); 147 Expect.equals('X-null-null', result.reflectee.field);
148 result = cm.newInstance(const Symbol('b'), [], 148 result = cm.newInstance(const Symbol('b'), [], {const Symbol('b') :'Y', const Symbol('c') :'Z', const Symbol('a') :'X'});
149 {const Symbol('b'): 'Y', const Symbol('c'): 'Z', const Symbol('a'): 'X'});
150 Expect.equals('X-Y-Z', result.reflectee.field); 149 Expect.equals('X-Y-Z', result.reflectee.field);
151 Expect.throws(() => cm.newInstance(const Symbol('b'), ['X']), 150 Expect.throws(() => cm.newInstance(const Symbol('b'), ['X']),
152 isNoSuchMethodError, 'Extra positional arguments'); 151 isNoSuchMethodError,
153 Expect.throws( 152 'Extra positional arguments');
154 () => cm 153 Expect.throws(() => cm.newInstance(const Symbol('b'), ['X'], {const Symbol('un def'): 'Y'}),
155 .newInstance(const Symbol('b'), ['X'], {const Symbol('undef'): 'Y'}), 154 isNoSuchMethodError,
156 isNoSuchMethodError, 155 'Unmatched named argument');
157 'Unmatched named argument');
158 156
159 result = cm.newInstance(const Symbol('c'), ['X']); 157 result = cm.newInstance(const Symbol('c'), ['X']);
160 Expect.equals('X-null-C', result.reflectee.field); 158 Expect.equals('X-null-C', result.reflectee.field);
161 result = cm.newInstance(const Symbol('c'), ['X', 'Y']); 159 result = cm.newInstance(const Symbol('c'), ['X', 'Y']);
162 Expect.equals('X-Y-C', result.reflectee.field); 160 Expect.equals('X-Y-C', result.reflectee.field);
163 result = cm.newInstance(const Symbol('c'), ['X', 'Y', 'Z']); 161 result = cm.newInstance(const Symbol('c'), ['X', 'Y', 'Z']);
164 Expect.equals('X-Y-Z', result.reflectee.field); 162 Expect.equals('X-Y-Z', result.reflectee.field);
165 Expect.throws(() => cm.newInstance(const Symbol('c'), []), 163 Expect.throws(() => cm.newInstance(const Symbol('c'), []),
166 isNoSuchMethodError, 'Insufficient positional arguments'); 164 isNoSuchMethodError,
165 'Insufficient positional arguments');
167 Expect.throws(() => cm.newInstance(const Symbol('c'), ['X', 'Y', 'Z', 'W']), 166 Expect.throws(() => cm.newInstance(const Symbol('c'), ['X', 'Y', 'Z', 'W']),
168 isNoSuchMethodError, 'Extra positional arguments'); 167 isNoSuchMethodError,
169 Expect.throws( 168 'Extra positional arguments');
170 () => cm 169 Expect.throws(() => cm.newInstance(const Symbol('c'), ['X'], {const Symbol('un def'): 'Y'}),
171 .newInstance(const Symbol('c'), ['X'], {const Symbol('undef'): 'Y'}), 170 isNoSuchMethodError,
172 isNoSuchMethodError, 171 'Unmatched named argument');
173 'Unmatched named argument');
174 172
175 result = cm.newInstance(const Symbol('d'), []); 173 result = cm.newInstance(const Symbol('d'), []);
176 Expect.equals('null-B-C', result.reflectee.field); 174 Expect.equals('null-B-C', result.reflectee.field);
177 result = cm.newInstance(const Symbol('d'), ['X']); 175 result = cm.newInstance(const Symbol('d'), ['X']);
178 Expect.equals('X-B-C', result.reflectee.field); 176 Expect.equals('X-B-C', result.reflectee.field);
179 result = cm.newInstance(const Symbol('d'), ['X', 'Y']); 177 result = cm.newInstance(const Symbol('d'), ['X', 'Y']);
180 Expect.equals('X-Y-C', result.reflectee.field); 178 Expect.equals('X-Y-C', result.reflectee.field);
181 result = cm.newInstance(const Symbol('d'), ['X', 'Y', 'Z']); 179 result = cm.newInstance(const Symbol('d'), ['X', 'Y', 'Z']);
182 Expect.equals('X-Y-Z', result.reflectee.field); 180 Expect.equals('X-Y-Z', result.reflectee.field);
183 Expect.throws(() => cm.newInstance(const Symbol('d'), ['X', 'Y', 'Z', 'W']), 181 Expect.throws(() => cm.newInstance(const Symbol('d'), ['X', 'Y', 'Z', 'W']),
184 isNoSuchMethodError, 'Extra positional arguments'); 182 isNoSuchMethodError,
185 Expect.throws( 183 'Extra positional arguments');
186 () => cm 184 Expect.throws(() => cm.newInstance(const Symbol('d'), ['X'], {const Symbol('un def'): 'Y'}),
187 .newInstance(const Symbol('d'), ['X'], {const Symbol('undef'): 'Y'}), 185 isNoSuchMethodError,
188 isNoSuchMethodError, 186 'Unmatched named argument');
189 'Unmatched named argument');
190 187
191 result = cm.newInstance(const Symbol('e'), ['X', 'Y', 'Z']); 188 result = cm.newInstance(const Symbol('e'), ['X', 'Y', 'Z']);
192 Expect.equals('X-Y-Z', result.reflectee.field); 189 Expect.equals('X-Y-Z', result.reflectee.field);
193 Expect.throws(() => cm.newInstance(const Symbol('e'), ['X']), 190 Expect.throws(() => cm.newInstance(const Symbol('e'), ['X']),
194 isNoSuchMethodError, 'Insufficient positional arguments'); 191 isNoSuchMethodError,
192 'Insufficient positional arguments');
195 Expect.throws(() => cm.newInstance(const Symbol('e'), ['X', 'Y', 'Z', 'W']), 193 Expect.throws(() => cm.newInstance(const Symbol('e'), ['X', 'Y', 'Z', 'W']),
196 isNoSuchMethodError, 'Extra positional arguments'); 194 isNoSuchMethodError,
197 Expect.throws( 195 'Extra positional arguments');
198 () => cm 196 Expect.throws(() => cm.newInstance(const Symbol('e'), ['X'], {const Symbol('un def'): 'Y'}),
199 .newInstance(const Symbol('e'), ['X'], {const Symbol('undef'): 'Y'}), 197 isNoSuchMethodError,
200 isNoSuchMethodError, 198 'Unmatched named argument');
201 'Unmatched named argument');
202 } 199 }
203 200
204 testSyncApply() { 201 testSyncApply() {
205 ClosureMirror cm; 202 ClosureMirror cm;
206 InstanceMirror result; 203 InstanceMirror result;
207 204
208 cm = reflect(a); 205 cm = reflect(a);
209 result = cm.apply(['X']); 206 result = cm.apply(['X']);
210 Expect.equals('X-B-null', result.reflectee); 207 Expect.equals('X-B-null', result.reflectee);
211 result = cm.apply(['X'], {const Symbol('b'): 'Y'}); 208 result = cm.apply(['X'], {const Symbol('b') : 'Y'});
212 Expect.equals('X-Y-null', result.reflectee); 209 Expect.equals('X-Y-null', result.reflectee);
213 result = cm.apply(['X'], {const Symbol('c'): 'Z', const Symbol('b'): 'Y'}); 210 result = cm.apply(['X'], {const Symbol('c') : 'Z', const Symbol('b') : 'Y'});
214 Expect.equals('X-Y-Z', result.reflectee); 211 Expect.equals('X-Y-Z', result.reflectee);
215 Expect.throws(() => cm.apply([]), isNoSuchMethodError, 212 Expect.throws(() => cm.apply([]),
216 'Insufficient positional arguments'); 213 isNoSuchMethodError,
217 Expect.throws(() => cm.apply(['X', 'Y']), isNoSuchMethodError, 214 'Insufficient positional arguments');
218 'Extra positional arguments'); 215 Expect.throws(() => cm.apply(['X', 'Y']),
219 Expect.throws(() => cm.apply(['X'], {const Symbol('undef'): 'Y'}), 216 isNoSuchMethodError,
220 isNoSuchMethodError, 'Unmatched named argument'); 217 'Extra positional arguments');
218 Expect.throws(() => cm.apply(['X'], {const Symbol('undef') : 'Y'}),
219 isNoSuchMethodError,
220 'Unmatched named argument');
221 221
222 cm = reflect(b); 222 cm = reflect(b);
223 result = cm.apply([]); 223 result = cm.apply([]);
224 Expect.equals('A-null-null', result.reflectee); 224 Expect.equals('A-null-null', result.reflectee);
225 result = cm.apply([], {const Symbol('a'): 'X'}); 225 result = cm.apply([], {const Symbol('a') : 'X'});
226 Expect.equals('X-null-null', result.reflectee); 226 Expect.equals('X-null-null', result.reflectee);
227 result = cm.apply([], 227 result = cm.apply([], {const Symbol('b') :'Y', const Symbol('c') :'Z', const S ymbol('a') :'X'});
228 {const Symbol('b'): 'Y', const Symbol('c'): 'Z', const Symbol('a'): 'X'});
229 Expect.equals('X-Y-Z', result.reflectee); 228 Expect.equals('X-Y-Z', result.reflectee);
230 Expect.throws( 229 Expect.throws(() => cm.apply(['X']),
231 () => cm.apply(['X']), isNoSuchMethodError, 'Extra positional arguments'); 230 isNoSuchMethodError,
231 'Extra positional arguments');
232 Expect.throws(() => cm.apply(['X'], {const Symbol('undef'): 'Y'}), 232 Expect.throws(() => cm.apply(['X'], {const Symbol('undef'): 'Y'}),
233 isNoSuchMethodError, 'Unmatched named argument'); 233 isNoSuchMethodError,
234 'Unmatched named argument');
234 235
235 cm = reflect(c); 236 cm = reflect(c);
236 result = cm.apply(['X']); 237 result = cm.apply(['X']);
237 Expect.equals('X-null-C', result.reflectee); 238 Expect.equals('X-null-C', result.reflectee);
238 result = cm.apply(['X', 'Y']); 239 result = cm.apply(['X', 'Y']);
239 Expect.equals('X-Y-C', result.reflectee); 240 Expect.equals('X-Y-C', result.reflectee);
240 result = cm.apply(['X', 'Y', 'Z']); 241 result = cm.apply(['X', 'Y', 'Z']);
241 Expect.equals('X-Y-Z', result.reflectee); 242 Expect.equals('X-Y-Z', result.reflectee);
242 Expect.throws(() => cm.apply([]), isNoSuchMethodError, 243 Expect.throws(() => cm.apply([]),
243 'Insufficient positional arguments'); 244 isNoSuchMethodError,
244 Expect.throws(() => cm.apply(['X', 'Y', 'Z', 'W']), isNoSuchMethodError, 245 'Insufficient positional arguments');
245 'Extra positional arguments'); 246 Expect.throws(() => cm.apply(['X', 'Y', 'Z', 'W']),
247 isNoSuchMethodError,
248 'Extra positional arguments');
246 Expect.throws(() => cm.apply(['X'], {const Symbol('undef'): 'Y'}), 249 Expect.throws(() => cm.apply(['X'], {const Symbol('undef'): 'Y'}),
247 isNoSuchMethodError, 'Unmatched named argument'); 250 isNoSuchMethodError,
251 'Unmatched named argument');
248 252
249 cm = reflect(d); 253 cm = reflect(d);
250 result = cm.apply([]); 254 result = cm.apply([]);
251 Expect.equals('null-B-C', result.reflectee); 255 Expect.equals('null-B-C', result.reflectee);
252 result = cm.apply(['X']); 256 result = cm.apply(['X']);
253 Expect.equals('X-B-C', result.reflectee); 257 Expect.equals('X-B-C', result.reflectee);
254 result = cm.apply(['X', 'Y']); 258 result = cm.apply(['X', 'Y']);
255 Expect.equals('X-Y-C', result.reflectee); 259 Expect.equals('X-Y-C', result.reflectee);
256 result = cm.apply(['X', 'Y', 'Z']); 260 result = cm.apply(['X', 'Y', 'Z']);
257 Expect.equals('X-Y-Z', result.reflectee); 261 Expect.equals('X-Y-Z', result.reflectee);
258 Expect.throws(() => cm.apply(['X', 'Y', 'Z', 'W']), isNoSuchMethodError, 262 Expect.throws(() => cm.apply(['X', 'Y', 'Z', 'W']),
259 'Extra positional arguments'); 263 isNoSuchMethodError,
264 'Extra positional arguments');
260 Expect.throws(() => cm.apply(['X'], {const Symbol('undef'): 'Y'}), 265 Expect.throws(() => cm.apply(['X'], {const Symbol('undef'): 'Y'}),
261 isNoSuchMethodError, 'Unmatched named argument'); 266 isNoSuchMethodError,
267 'Unmatched named argument');
262 268
263 cm = reflect(e); 269 cm = reflect(e);
264 result = cm.apply(['X', 'Y', 'Z']); 270 result = cm.apply(['X', 'Y', 'Z']);
265 Expect.equals('X-Y-Z', result.reflectee); 271 Expect.equals('X-Y-Z', result.reflectee);
266 Expect.throws(() => cm.apply(['X']), isNoSuchMethodError, 272 Expect.throws(() => cm.apply(['X']),
267 'Insufficient positional arguments'); 273 isNoSuchMethodError,
268 Expect.throws(() => cm.apply(['X', 'Y', 'Z', 'W']), isNoSuchMethodError, 274 'Insufficient positional arguments');
269 'Extra positional arguments'); 275 Expect.throws(() => cm.apply(['X', 'Y', 'Z', 'W']),
276 isNoSuchMethodError,
277 'Extra positional arguments');
270 Expect.throws(() => cm.apply(['X'], {const Symbol('undef'): 'Y'}), 278 Expect.throws(() => cm.apply(['X'], {const Symbol('undef'): 'Y'}),
271 isNoSuchMethodError, 'Unmatched named argument'); 279 isNoSuchMethodError,
280 'Unmatched named argument');
272 } 281 }
273 282
274 main() { 283 main() {
275 isDart2js = true; //# 01: ok 284 isDart2js = true; //# 01: ok
276 285
277 testSyncInvoke(reflect(new C())); // InstanceMirror 286 testSyncInvoke(reflect(new C())); // InstanceMirror
278 287
279 if (isDart2js) return; 288 if (isDart2js) return;
280 289
281 testSyncInvoke(reflectClass(D)); // ClassMirror 290 testSyncInvoke(reflectClass(D)); // ClassMirror
282 LibraryMirror lib = reflectClass(D).owner; 291 LibraryMirror lib = reflectClass(D).owner;
283 testSyncInvoke(lib); // LibraryMirror 292 testSyncInvoke(lib); // LibraryMirror
284 293
285 testSyncNewInstance(); 294 testSyncNewInstance();
286 295
287 testSyncApply(); 296 testSyncApply();
288 } 297 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698