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

Side by Side Diff: pkg/analysis_server/test/analysis_notification_overrides_test.dart

Issue 406583002: Use futures uniformly rather than a mix of futures and CPS in tests. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 5 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
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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.domain.analysis.notification.overrides; 5 library test.domain.analysis.notification.overrides;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analysis_server/src/analysis_server.dart'; 9 import 'package:analysis_server/src/analysis_server.dart';
10 import 'package:analysis_server/src/computer/computer_overrides.dart'; 10 import 'package:analysis_server/src/computer/computer_overrides.dart';
(...skipping 22 matching lines...) Expand all
33 * Asserts that there is an overridden interface [Element] at the offset of 33 * Asserts that there is an overridden interface [Element] at the offset of
34 * [search] in [override]. 34 * [search] in [override].
35 */ 35 */
36 void assertHasInterfaceElement(String search) { 36 void assertHasInterfaceElement(String search) {
37 int offset = findOffset(search); 37 int offset = findOffset(search);
38 for (Element element in override.interfaceElements) { 38 for (Element element in override.interfaceElements) {
39 if (element.location.offset == offset) { 39 if (element.location.offset == offset) {
40 return; 40 return;
41 } 41 }
42 } 42 }
43 fail('Expect to find an overridden interface elements at $offset in ' 43 fail(
44 '${override.interfaceElements.join('\n')}'); 44 'Expect to find an overridden interface elements at $offset in '
45 '${override.interfaceElements.join('\n')}');
45 } 46 }
46 47
47 /** 48 /**
48 * Validates that there is an [Override] at the offset of [search]. 49 * Validates that there is an [Override] at the offset of [search].
49 * 50 *
50 * If [length] is not specified explicitly, then length of an identifier 51 * If [length] is not specified explicitly, then length of an identifier
51 * from [search] is used. 52 * from [search] is used.
52 */ 53 */
53 void assertHasOverride(String search, [int length = -1]) { 54 void assertHasOverride(String search, [int length = -1]) {
54 int offset = findOffset(search); 55 int offset = findOffset(search);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 * 88 *
88 * If [exists] is `true`, then fails if such [Override] does not exist. 89 * If [exists] is `true`, then fails if such [Override] does not exist.
89 * Otherwise remembers this it into [override]. 90 * Otherwise remembers this it into [override].
90 * 91 *
91 * If [exists] is `false`, then fails if such [Override] exists. 92 * If [exists] is `false`, then fails if such [Override] exists.
92 */ 93 */
93 void findOverride(int offset, int length, [bool exists]) { 94 void findOverride(int offset, int length, [bool exists]) {
94 for (Override override in overridesList) { 95 for (Override override in overridesList) {
95 if (override.offset == offset && override.length == length) { 96 if (override.offset == offset && override.length == length) {
96 if (exists == false) { 97 if (exists == false) {
97 fail('Not expected to find (offset=$offset; length=$length) in\n' 98 fail(
98 '${overridesList.join('\n')}'); 99 'Not expected to find (offset=$offset; length=$length) in\n'
100 '${overridesList.join('\n')}');
99 } 101 }
100 this.override = override; 102 this.override = override;
101 return; 103 return;
102 } 104 }
103 } 105 }
104 if (exists == true) { 106 if (exists == true) {
105 fail('Expected to find (offset=$offset; length=$length) in\n' 107 fail(
106 '${overridesList.join('\n')}'); 108 'Expected to find (offset=$offset; length=$length) in\n'
109 '${overridesList.join('\n')}');
107 } 110 }
108 } 111 }
109 112
110 Future prepareOverrides(then()) { 113 Future prepareOverrides() {
111 addAnalysisSubscription(AnalysisService.OVERRIDES, testFile); 114 addAnalysisSubscription(AnalysisService.OVERRIDES, testFile);
112 return waitForTasksFinished().then((_) { 115 return waitForTasksFinished();
113 then();
114 });
115 } 116 }
116 117
117 void processNotification(Notification notification) { 118 void processNotification(Notification notification) {
118 if (notification.event == ANALYSIS_OVERRIDES) { 119 if (notification.event == ANALYSIS_OVERRIDES) {
119 String file = notification.getParameter(FILE); 120 String file = notification.getParameter(FILE);
120 if (file == testFile) { 121 if (file == testFile) {
121 overridesList = <Override>[]; 122 overridesList = <Override>[];
122 List<Map<String, Object>> jsonList = notification.getParameter( 123 List<Map<String, Object>> jsonList =
123 OVERRIDES); 124 notification.getParameter(OVERRIDES);
124 for (Map<String, Object> json in jsonList) { 125 for (Map<String, Object> json in jsonList) {
125 overridesList.add(new Override.fromJson(json)); 126 overridesList.add(new Override.fromJson(json));
126 } 127 }
127 } 128 }
128 } 129 }
129 } 130 }
130 131
131 void setUp() { 132 void setUp() {
132 super.setUp(); 133 super.setUp();
133 createProject(); 134 createProject();
134 } 135 }
135 136
136 test_afterAnalysis() { 137 test_afterAnalysis() {
137 addTestFile(''' 138 addTestFile('''
138 class A { 139 class A {
139 m() {} // in A 140 m() {} // in A
140 } 141 }
141 class B implements A { 142 class B implements A {
142 m() {} // in B 143 m() {} // in B
143 } 144 }
144 '''); 145 ''');
145 return waitForTasksFinished().then((_) { 146 return waitForTasksFinished().then((_) {
146 return prepareOverrides(() { 147 return prepareOverrides().then((_) {
147 assertHasOverride('m() {} // in B'); 148 assertHasOverride('m() {} // in B');
148 assertNoSuperElement(); 149 assertNoSuperElement();
149 assertHasInterfaceElement('m() {} // in A'); 150 assertHasInterfaceElement('m() {} // in A');
150 }); 151 });
151 }); 152 });
152 } 153 }
153 154
154 test_interface_method_direct_multiple() { 155 test_interface_method_direct_multiple() {
155 addTestFile(''' 156 addTestFile('''
156 class IA { 157 class IA {
157 m() {} // in IA 158 m() {} // in IA
158 } 159 }
159 class IB { 160 class IB {
160 m() {} // in IB 161 m() {} // in IB
161 } 162 }
162 class A implements IA, IB { 163 class A implements IA, IB {
163 m() {} // in A 164 m() {} // in A
164 } 165 }
165 '''); 166 ''');
166 return prepareOverrides(() { 167 return prepareOverrides().then((_) {
167 assertHasOverride('m() {} // in A'); 168 assertHasOverride('m() {} // in A');
168 assertNoSuperElement(); 169 assertNoSuperElement();
169 assertHasInterfaceElement('m() {} // in IA'); 170 assertHasInterfaceElement('m() {} // in IA');
170 assertHasInterfaceElement('m() {} // in IB'); 171 assertHasInterfaceElement('m() {} // in IB');
171 }); 172 });
172 } 173 }
173 174
174 test_interface_method_direct_single() { 175 test_interface_method_direct_single() {
175 addTestFile(''' 176 addTestFile('''
176 class A { 177 class A {
177 m() {} // in A 178 m() {} // in A
178 } 179 }
179 class B implements A { 180 class B implements A {
180 m() {} // in B 181 m() {} // in B
181 } 182 }
182 '''); 183 ''');
183 return prepareOverrides(() { 184 return prepareOverrides().then((_) {
184 assertHasOverride('m() {} // in B'); 185 assertHasOverride('m() {} // in B');
185 assertNoSuperElement(); 186 assertNoSuperElement();
186 assertHasInterfaceElement('m() {} // in A'); 187 assertHasInterfaceElement('m() {} // in A');
187 }); 188 });
188 } 189 }
189 190
190 test_interface_method_indirect_single() { 191 test_interface_method_indirect_single() {
191 addTestFile(''' 192 addTestFile('''
192 class A { 193 class A {
193 m() {} // in A 194 m() {} // in A
194 } 195 }
195 class B extends A { 196 class B extends A {
196 } 197 }
197 class C implements B { 198 class C implements B {
198 m() {} // in C 199 m() {} // in C
199 } 200 }
200 '''); 201 ''');
201 return prepareOverrides(() { 202 return prepareOverrides().then((_) {
202 assertHasOverride('m() {} // in C'); 203 assertHasOverride('m() {} // in C');
203 assertNoSuperElement(); 204 assertNoSuperElement();
204 assertHasInterfaceElement('m() {} // in A'); 205 assertHasInterfaceElement('m() {} // in A');
205 }); 206 });
206 } 207 }
207 208
208 test_super_fieldByField() { 209 test_super_fieldByField() {
209 addTestFile(''' 210 addTestFile('''
210 class A { 211 class A {
211 int fff; // in A 212 int fff; // in A
212 } 213 }
213 class B extends A { 214 class B extends A {
214 int fff; // in B 215 int fff; // in B
215 } 216 }
216 '''); 217 ''');
217 return prepareOverrides(() { 218 return prepareOverrides().then((_) {
218 assertHasOverride('fff; // in B'); 219 assertHasOverride('fff; // in B');
219 assertHasSuperElement('fff; // in A'); 220 assertHasSuperElement('fff; // in A');
220 assertNoInterfaceElements(); 221 assertNoInterfaceElements();
221 }); 222 });
222 } 223 }
223 224
224 test_super_fieldByGetter() { 225 test_super_fieldByGetter() {
225 addTestFile(''' 226 addTestFile('''
226 class A { 227 class A {
227 int fff; // in A 228 int fff; // in A
228 } 229 }
229 class B extends A { 230 class B extends A {
230 get fff => 0; // in B 231 get fff => 0; // in B
231 } 232 }
232 '''); 233 ''');
233 return prepareOverrides(() { 234 return prepareOverrides().then((_) {
234 assertHasOverride('fff => 0; // in B'); 235 assertHasOverride('fff => 0; // in B');
235 assertHasSuperElement('fff; // in A'); 236 assertHasSuperElement('fff; // in A');
236 assertNoInterfaceElements(); 237 assertNoInterfaceElements();
237 }); 238 });
238 } 239 }
239 240
240 test_super_fieldByMethod() { 241 test_super_fieldByMethod() {
241 addTestFile(''' 242 addTestFile('''
242 class A { 243 class A {
243 int fff; // in A 244 int fff; // in A
244 } 245 }
245 class B extends A { 246 class B extends A {
246 fff() {} // in B 247 fff() {} // in B
247 } 248 }
248 '''); 249 ''');
249 return prepareOverrides(() { 250 return prepareOverrides().then((_) {
250 assertHasOverride('fff() {} // in B'); 251 assertHasOverride('fff() {} // in B');
251 assertHasSuperElement('fff; // in A'); 252 assertHasSuperElement('fff; // in A');
252 assertNoInterfaceElements(); 253 assertNoInterfaceElements();
253 }); 254 });
254 } 255 }
255 256
256 test_super_fieldBySetter() { 257 test_super_fieldBySetter() {
257 addTestFile(''' 258 addTestFile('''
258 class A { 259 class A {
259 int fff; // in A 260 int fff; // in A
260 } 261 }
261 class B extends A { 262 class B extends A {
262 set fff(x) {} // in B 263 set fff(x) {} // in B
263 } 264 }
264 '''); 265 ''');
265 return prepareOverrides(() { 266 return prepareOverrides().then((_) {
266 assertHasOverride('fff(x) {} // in B'); 267 assertHasOverride('fff(x) {} // in B');
267 assertHasSuperElement('fff; // in A'); 268 assertHasSuperElement('fff; // in A');
268 assertNoInterfaceElements(); 269 assertNoInterfaceElements();
269 }); 270 });
270 } 271 }
271 272
272 test_super_getterByField() { 273 test_super_getterByField() {
273 addTestFile(''' 274 addTestFile('''
274 class A { 275 class A {
275 get fff => 0; // in A 276 get fff => 0; // in A
276 set fff(x) {} // in A 277 set fff(x) {} // in A
277 } 278 }
278 class B extends A { 279 class B extends A {
279 int fff; // in B 280 int fff; // in B
280 } 281 }
281 '''); 282 ''');
282 return prepareOverrides(() { 283 return prepareOverrides().then((_) {
283 assertHasOverride('fff; // in B'); 284 assertHasOverride('fff; // in B');
284 assertHasSuperElement('fff => 0; // in A'); 285 assertHasSuperElement('fff => 0; // in A');
285 assertNoInterfaceElements(); 286 assertNoInterfaceElements();
286 }); 287 });
287 } 288 }
288 289
289 test_super_getterByGetter() { 290 test_super_getterByGetter() {
290 addTestFile(''' 291 addTestFile('''
291 class A { 292 class A {
292 get fff => 0; // in A 293 get fff => 0; // in A
293 } 294 }
294 class B extends A { 295 class B extends A {
295 get fff => 0; // in B 296 get fff => 0; // in B
296 } 297 }
297 '''); 298 ''');
298 return prepareOverrides(() { 299 return prepareOverrides().then((_) {
299 assertHasOverride('fff => 0; // in B'); 300 assertHasOverride('fff => 0; // in B');
300 assertHasSuperElement('fff => 0; // in A'); 301 assertHasSuperElement('fff => 0; // in A');
301 assertNoInterfaceElements(); 302 assertNoInterfaceElements();
302 }); 303 });
303 } 304 }
304 305
305 test_super_method_direct() { 306 test_super_method_direct() {
306 addTestFile(''' 307 addTestFile('''
307 class A { 308 class A {
308 m() {} // in A 309 m() {} // in A
309 } 310 }
310 class B extends A { 311 class B extends A {
311 m() {} // in B 312 m() {} // in B
312 } 313 }
313 '''); 314 ''');
314 return prepareOverrides(() { 315 return prepareOverrides().then((_) {
315 assertHasOverride('m() {} // in B'); 316 assertHasOverride('m() {} // in B');
316 assertHasSuperElement('m() {} // in A'); 317 assertHasSuperElement('m() {} // in A');
317 assertNoInterfaceElements(); 318 assertNoInterfaceElements();
318 }); 319 });
319 } 320 }
320 321
321 test_super_method_indirect() { 322 test_super_method_indirect() {
322 addTestFile(''' 323 addTestFile('''
323 class A { 324 class A {
324 m() {} // in A 325 m() {} // in A
325 } 326 }
326 class B extends A { 327 class B extends A {
327 } 328 }
328 class C extends B { 329 class C extends B {
329 m() {} // in C 330 m() {} // in C
330 } 331 }
331 '''); 332 ''');
332 return prepareOverrides(() { 333 return prepareOverrides().then((_) {
333 assertHasOverride('m() {} // in C'); 334 assertHasOverride('m() {} // in C');
334 assertHasSuperElement('m() {} // in A'); 335 assertHasSuperElement('m() {} // in A');
335 assertNoInterfaceElements(); 336 assertNoInterfaceElements();
336 }); 337 });
337 } 338 }
338 339
339 test_super_setterBySetter() { 340 test_super_setterBySetter() {
340 addTestFile(''' 341 addTestFile('''
341 class A { 342 class A {
342 set fff(x) {} // in A 343 set fff(x) {} // in A
343 } 344 }
344 class B extends A { 345 class B extends A {
345 set fff(x) {} // in B 346 set fff(x) {} // in B
346 } 347 }
347 '''); 348 ''');
348 return prepareOverrides(() { 349 return prepareOverrides().then((_) {
349 assertHasOverride('fff(x) {} // in B'); 350 assertHasOverride('fff(x) {} // in B');
350 assertHasSuperElement('fff(x) {} // in A'); 351 assertHasSuperElement('fff(x) {} // in A');
351 assertNoInterfaceElements(); 352 assertNoInterfaceElements();
352 }); 353 });
353 } 354 }
354 } 355 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698