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

Side by Side Diff: pkg/analysis_server/test/services/refactoring/rename_unit_member_test.dart

Issue 2614033003: Make subclasses of AbstractContextTest asynchronous. (Closed)
Patch Set: Created 3 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
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.services.refactoring.rename_unit_member; 5 library test.services.refactoring.rename_unit_member;
6 6
7 import 'package:analysis_server/plugin/protocol/protocol.dart'; 7 import 'package:analysis_server/plugin/protocol/protocol.dart';
8 import 'package:analysis_server/src/services/correction/status.dart'; 8 import 'package:analysis_server/src/services/correction/status.dart';
9 import 'package:test/test.dart'; 9 import 'package:test/test.dart';
10 import 'package:test_reflective_loader/test_reflective_loader.dart'; 10 import 'package:test_reflective_loader/test_reflective_loader.dart';
11 11
12 import 'abstract_rename.dart'; 12 import 'abstract_rename.dart';
13 13
14 main() { 14 main() {
15 defineReflectiveSuite(() { 15 defineReflectiveSuite(() {
16 defineReflectiveTests(RenameUnitMemberTest); 16 defineReflectiveTests(RenameUnitMemberTest);
17 }); 17 });
18 } 18 }
19 19
20 @reflectiveTest 20 @reflectiveTest
21 class RenameUnitMemberTest extends RenameRefactoringTest { 21 class RenameUnitMemberTest extends RenameRefactoringTest {
22 test_checkFinalConditions_hasTopLevel_ClassElement() async { 22 test_checkFinalConditions_hasTopLevel_ClassElement() async {
23 indexTestUnit(''' 23 await indexTestUnit('''
24 class Test {} 24 class Test {}
25 class NewName {} // existing 25 class NewName {} // existing
26 '''); 26 ''');
27 createRenameRefactoringAtString('Test {}'); 27 createRenameRefactoringAtString('Test {}');
28 // check status 28 // check status
29 refactoring.newName = 'NewName'; 29 refactoring.newName = 'NewName';
30 RefactoringStatus status = await refactoring.checkFinalConditions(); 30 RefactoringStatus status = await refactoring.checkFinalConditions();
31 assertRefactoringStatus(status, RefactoringProblemSeverity.ERROR, 31 assertRefactoringStatus(status, RefactoringProblemSeverity.ERROR,
32 expectedMessage: "Library already declares class with name 'NewName'.", 32 expectedMessage: "Library already declares class with name 'NewName'.",
33 expectedContextSearch: 'NewName {} // existing'); 33 expectedContextSearch: 'NewName {} // existing');
34 } 34 }
35 35
36 test_checkFinalConditions_hasTopLevel_FunctionTypeAliasElement() async { 36 test_checkFinalConditions_hasTopLevel_FunctionTypeAliasElement() async {
37 indexTestUnit(''' 37 await indexTestUnit('''
38 class Test {} 38 class Test {}
39 typedef NewName(); // existing 39 typedef NewName(); // existing
40 '''); 40 ''');
41 createRenameRefactoringAtString('Test {}'); 41 createRenameRefactoringAtString('Test {}');
42 // check status 42 // check status
43 refactoring.newName = 'NewName'; 43 refactoring.newName = 'NewName';
44 RefactoringStatus status = await refactoring.checkFinalConditions(); 44 RefactoringStatus status = await refactoring.checkFinalConditions();
45 assertRefactoringStatus(status, RefactoringProblemSeverity.ERROR, 45 assertRefactoringStatus(status, RefactoringProblemSeverity.ERROR,
46 expectedMessage: 46 expectedMessage:
47 "Library already declares function type alias with name 'NewName'.", 47 "Library already declares function type alias with name 'NewName'.",
48 expectedContextSearch: 'NewName(); // existing'); 48 expectedContextSearch: 'NewName(); // existing');
49 } 49 }
50 50
51 test_checkFinalConditions_OK_qualifiedSuper_MethodElement() async { 51 test_checkFinalConditions_OK_qualifiedSuper_MethodElement() async {
52 indexTestUnit(''' 52 await indexTestUnit('''
53 class Test {} 53 class Test {}
54 class A { 54 class A {
55 NewName() {} 55 NewName() {}
56 } 56 }
57 class B extends A { 57 class B extends A {
58 main() { 58 main() {
59 super.NewName(); // super-ref 59 super.NewName(); // super-ref
60 } 60 }
61 } 61 }
62 '''); 62 ''');
63 createRenameRefactoringAtString('Test {}'); 63 createRenameRefactoringAtString('Test {}');
64 // check status 64 // check status
65 refactoring.newName = 'NewName'; 65 refactoring.newName = 'NewName';
66 RefactoringStatus status = await refactoring.checkFinalConditions(); 66 RefactoringStatus status = await refactoring.checkFinalConditions();
67 assertRefactoringStatusOK(status); 67 assertRefactoringStatusOK(status);
68 } 68 }
69 69
70 test_checkFinalConditions_publicToPrivate_usedInOtherLibrary() async { 70 test_checkFinalConditions_publicToPrivate_usedInOtherLibrary() async {
71 indexTestUnit(''' 71 await indexTestUnit('''
72 class Test {} 72 class Test {}
73 '''); 73 ''');
74 indexUnit( 74 await indexUnit(
75 '/lib.dart', 75 '/lib.dart',
76 ''' 76 '''
77 library my.lib; 77 library my.lib;
78 import 'test.dart'; 78 import 'test.dart';
79 79
80 main() { 80 main() {
81 new Test(); 81 new Test();
82 } 82 }
83 '''); 83 ''');
84 createRenameRefactoringAtString('Test {}'); 84 createRenameRefactoringAtString('Test {}');
85 // check status 85 // check status
86 refactoring.newName = '_NewName'; 86 refactoring.newName = '_NewName';
87 RefactoringStatus status = await refactoring.checkFinalConditions(); 87 RefactoringStatus status = await refactoring.checkFinalConditions();
88 assertRefactoringStatus(status, RefactoringProblemSeverity.ERROR, 88 assertRefactoringStatus(status, RefactoringProblemSeverity.ERROR,
89 expectedMessage: "Renamed class will be invisible in 'my.lib'."); 89 expectedMessage: "Renamed class will be invisible in 'my.lib'.");
90 } 90 }
91 91
92 test_checkFinalConditions_shadowedBy_MethodElement() async { 92 test_checkFinalConditions_shadowedBy_MethodElement() async {
93 indexTestUnit(''' 93 await indexTestUnit('''
94 class Test {} 94 class Test {}
95 class A { 95 class A {
96 void NewName() {} 96 void NewName() {}
97 main() { 97 main() {
98 new Test(); 98 new Test();
99 } 99 }
100 } 100 }
101 '''); 101 ''');
102 createRenameRefactoringAtString('Test {}'); 102 createRenameRefactoringAtString('Test {}');
103 // check status 103 // check status
104 refactoring.newName = 'NewName'; 104 refactoring.newName = 'NewName';
105 RefactoringStatus status = await refactoring.checkFinalConditions(); 105 RefactoringStatus status = await refactoring.checkFinalConditions();
106 assertRefactoringStatus(status, RefactoringProblemSeverity.ERROR, 106 assertRefactoringStatus(status, RefactoringProblemSeverity.ERROR,
107 expectedMessage: 107 expectedMessage:
108 "Reference to renamed class will be shadowed by method 'A.NewName'." , 108 "Reference to renamed class will be shadowed by method 'A.NewName'." ,
109 expectedContextSearch: 'NewName() {}'); 109 expectedContextSearch: 'NewName() {}');
110 } 110 }
111 111
112 test_checkFinalConditions_shadowsInSubClass_importedLib() async { 112 test_checkFinalConditions_shadowsInSubClass_importedLib() async {
113 indexTestUnit(''' 113 await indexTestUnit('''
114 class Test {} 114 class Test {}
115 '''); 115 ''');
116 indexUnit( 116 await indexUnit(
117 '/lib.dart', 117 '/lib.dart',
118 ''' 118 '''
119 library my.lib; 119 library my.lib;
120 import 'test.dart'; 120 import 'test.dart';
121 class A { 121 class A {
122 NewName() {} 122 NewName() {}
123 } 123 }
124 class B extends A { 124 class B extends A {
125 main() { 125 main() {
126 NewName(); // super-ref 126 NewName(); // super-ref
127 }", 127 }",
128 } 128 }
129 '''); 129 ''');
130 createRenameRefactoringAtString('Test {}'); 130 createRenameRefactoringAtString('Test {}');
131 // check status 131 // check status
132 refactoring.newName = 'NewName'; 132 refactoring.newName = 'NewName';
133 RefactoringStatus status = await refactoring.checkFinalConditions(); 133 RefactoringStatus status = await refactoring.checkFinalConditions();
134 assertRefactoringStatus(status, RefactoringProblemSeverity.ERROR, 134 assertRefactoringStatus(status, RefactoringProblemSeverity.ERROR,
135 expectedMessage: "Renamed class will shadow method 'A.NewName'."); 135 expectedMessage: "Renamed class will shadow method 'A.NewName'.");
136 } 136 }
137 137
138 test_checkFinalConditions_shadowsInSubClass_importedLib_hideCombinator() async { 138 test_checkFinalConditions_shadowsInSubClass_importedLib_hideCombinator() async {
139 indexTestUnit(''' 139 await indexTestUnit('''
140 class Test {} 140 class Test {}
141 '''); 141 ''');
142 indexUnit( 142 await indexUnit(
143 '/lib.dart', 143 '/lib.dart',
144 ''' 144 '''
145 library my.lib; 145 library my.lib;
146 import 'test.dart' hide Test; 146 import 'test.dart' hide Test;
147 class A { 147 class A {
148 NewName() {} 148 NewName() {}
149 } 149 }
150 class B extends A { 150 class B extends A {
151 main() { 151 main() {
152 NewName(); // super-ref 152 NewName(); // super-ref
153 }", 153 }",
154 } 154 }
155 '''); 155 ''');
156 createRenameRefactoringAtString('Test {}'); 156 createRenameRefactoringAtString('Test {}');
157 // check status 157 // check status
158 refactoring.newName = 'NewName'; 158 refactoring.newName = 'NewName';
159 RefactoringStatus status = await refactoring.checkFinalConditions(); 159 RefactoringStatus status = await refactoring.checkFinalConditions();
160 assertRefactoringStatusOK(status); 160 assertRefactoringStatusOK(status);
161 } 161 }
162 162
163 test_checkFinalConditions_shadowsInSubClass_MethodElement() async { 163 test_checkFinalConditions_shadowsInSubClass_MethodElement() async {
164 indexTestUnit(''' 164 await indexTestUnit('''
165 class Test {} 165 class Test {}
166 class A { 166 class A {
167 NewName() {} 167 NewName() {}
168 } 168 }
169 class B extends A { 169 class B extends A {
170 main() { 170 main() {
171 NewName(); // super-ref 171 NewName(); // super-ref
172 } 172 }
173 } 173 }
174 '''); 174 ''');
175 createRenameRefactoringAtString('Test {}'); 175 createRenameRefactoringAtString('Test {}');
176 // check status 176 // check status
177 refactoring.newName = 'NewName'; 177 refactoring.newName = 'NewName';
178 RefactoringStatus status = await refactoring.checkFinalConditions(); 178 RefactoringStatus status = await refactoring.checkFinalConditions();
179 assertRefactoringStatus(status, RefactoringProblemSeverity.ERROR, 179 assertRefactoringStatus(status, RefactoringProblemSeverity.ERROR,
180 expectedMessage: "Renamed class will shadow method 'A.NewName'.", 180 expectedMessage: "Renamed class will shadow method 'A.NewName'.",
181 expectedContextSearch: 'NewName(); // super-ref'); 181 expectedContextSearch: 'NewName(); // super-ref');
182 } 182 }
183 183
184 test_checkFinalConditions_shadowsInSubClass_notImportedLib() async { 184 test_checkFinalConditions_shadowsInSubClass_notImportedLib() async {
185 indexUnit( 185 await indexUnit(
186 '/lib.dart', 186 '/lib.dart',
187 ''' 187 '''
188 library my.lib; 188 library my.lib;
189 class A { 189 class A {
190 NewName() {} 190 NewName() {}
191 } 191 }
192 class B extends A { 192 class B extends A {
193 main() { 193 main() {
194 NewName(); // super-ref 194 NewName(); // super-ref
195 }", 195 }",
196 } 196 }
197 '''); 197 ''');
198 indexTestUnit(''' 198 await indexTestUnit('''
199 class Test {} 199 class Test {}
200 '''); 200 ''');
201 createRenameRefactoringAtString('Test {}'); 201 createRenameRefactoringAtString('Test {}');
202 // check status 202 // check status
203 refactoring.newName = 'NewName'; 203 refactoring.newName = 'NewName';
204 RefactoringStatus status = await refactoring.checkFinalConditions(); 204 RefactoringStatus status = await refactoring.checkFinalConditions();
205 assertRefactoringStatusOK(status); 205 assertRefactoringStatusOK(status);
206 } 206 }
207 207
208 test_checkFinalConditions_shadowsInSubClass_notSubClass() async { 208 test_checkFinalConditions_shadowsInSubClass_notSubClass() async {
209 indexTestUnit(''' 209 await indexTestUnit('''
210 class Test {} 210 class Test {}
211 class A { 211 class A {
212 NewName() {} 212 NewName() {}
213 } 213 }
214 class B { 214 class B {
215 main(A a) { 215 main(A a) {
216 a.NewName(); 216 a.NewName();
217 } 217 }
218 } 218 }
219 '''); 219 ''');
220 createRenameRefactoringAtString('Test {}'); 220 createRenameRefactoringAtString('Test {}');
221 // check status 221 // check status
222 refactoring.newName = 'NewName'; 222 refactoring.newName = 'NewName';
223 RefactoringStatus status = await refactoring.checkFinalConditions(); 223 RefactoringStatus status = await refactoring.checkFinalConditions();
224 assertRefactoringStatusOK(status); 224 assertRefactoringStatusOK(status);
225 } 225 }
226 226
227 test_checkInitialConditions_inPubCache_posix() async { 227 test_checkInitialConditions_inPubCache_posix() async {
228 addSource( 228 addSource(
229 '/.pub-cache/lib.dart', 229 '/.pub-cache/lib.dart',
230 r''' 230 r'''
231 class A {} 231 class A {}
232 '''); 232 ''');
233 indexTestUnit(''' 233 await indexTestUnit('''
234 import '/.pub-cache/lib.dart'; 234 import '/.pub-cache/lib.dart';
235 main() { 235 main() {
236 A a; 236 A a;
237 } 237 }
238 '''); 238 ''');
239 createRenameRefactoringAtString('A a'); 239 createRenameRefactoringAtString('A a');
240 // check status 240 // check status
241 refactoring.newName = 'NewName'; 241 refactoring.newName = 'NewName';
242 RefactoringStatus status = await refactoring.checkInitialConditions(); 242 RefactoringStatus status = await refactoring.checkInitialConditions();
243 assertRefactoringStatus(status, RefactoringProblemSeverity.FATAL, 243 assertRefactoringStatus(status, RefactoringProblemSeverity.FATAL,
244 expectedMessage: 244 expectedMessage:
245 "The class 'A' is defined in a pub package, so cannot be renamed."); 245 "The class 'A' is defined in a pub package, so cannot be renamed.");
246 } 246 }
247 247
248 test_checkInitialConditions_inPubCache_windows() async { 248 test_checkInitialConditions_inPubCache_windows() async {
249 addSource( 249 addSource(
250 '/Pub/Cache/lib.dart', 250 '/Pub/Cache/lib.dart',
251 r''' 251 r'''
252 class A {} 252 class A {}
253 '''); 253 ''');
254 indexTestUnit(''' 254 await indexTestUnit('''
255 import '/Pub/Cache/lib.dart'; 255 import '/Pub/Cache/lib.dart';
256 main() { 256 main() {
257 A a; 257 A a;
258 } 258 }
259 '''); 259 ''');
260 createRenameRefactoringAtString('A a'); 260 createRenameRefactoringAtString('A a');
261 // check status 261 // check status
262 refactoring.newName = 'NewName'; 262 refactoring.newName = 'NewName';
263 RefactoringStatus status = await refactoring.checkInitialConditions(); 263 RefactoringStatus status = await refactoring.checkInitialConditions();
264 assertRefactoringStatus(status, RefactoringProblemSeverity.FATAL, 264 assertRefactoringStatus(status, RefactoringProblemSeverity.FATAL,
265 expectedMessage: 265 expectedMessage:
266 "The class 'A' is defined in a pub package, so cannot be renamed."); 266 "The class 'A' is defined in a pub package, so cannot be renamed.");
267 } 267 }
268 268
269 test_checkInitialConditions_inSDK() async { 269 test_checkInitialConditions_inSDK() async {
270 indexTestUnit(''' 270 await indexTestUnit('''
271 main() { 271 main() {
272 String s; 272 String s;
273 } 273 }
274 '''); 274 ''');
275 createRenameRefactoringAtString('String s'); 275 createRenameRefactoringAtString('String s');
276 // check status 276 // check status
277 refactoring.newName = 'NewName'; 277 refactoring.newName = 'NewName';
278 RefactoringStatus status = await refactoring.checkInitialConditions(); 278 RefactoringStatus status = await refactoring.checkInitialConditions();
279 assertRefactoringStatus(status, RefactoringProblemSeverity.FATAL, 279 assertRefactoringStatus(status, RefactoringProblemSeverity.FATAL,
280 expectedMessage: 280 expectedMessage:
281 "The class 'String' is defined in the SDK, so cannot be renamed."); 281 "The class 'String' is defined in the SDK, so cannot be renamed.");
282 } 282 }
283 283
284 test_checkNewName_ClassElement() { 284 test_checkNewName_ClassElement() async {
285 indexTestUnit(''' 285 await indexTestUnit('''
286 class Test {} 286 class Test {}
287 '''); 287 ''');
288 createRenameRefactoringAtString('Test {}'); 288 createRenameRefactoringAtString('Test {}');
289 // null 289 // null
290 refactoring.newName = null; 290 refactoring.newName = null;
291 assertRefactoringStatus( 291 assertRefactoringStatus(
292 refactoring.checkNewName(), RefactoringProblemSeverity.FATAL, 292 refactoring.checkNewName(), RefactoringProblemSeverity.FATAL,
293 expectedMessage: "Class name must not be null."); 293 expectedMessage: "Class name must not be null.");
294 // empty 294 // empty
295 refactoring.newName = ''; 295 refactoring.newName = '';
296 assertRefactoringStatus( 296 assertRefactoringStatus(
297 refactoring.checkNewName(), RefactoringProblemSeverity.FATAL, 297 refactoring.checkNewName(), RefactoringProblemSeverity.FATAL,
298 expectedMessage: "Class name must not be empty."); 298 expectedMessage: "Class name must not be empty.");
299 // same 299 // same
300 refactoring.newName = 'Test'; 300 refactoring.newName = 'Test';
301 assertRefactoringStatus( 301 assertRefactoringStatus(
302 refactoring.checkNewName(), RefactoringProblemSeverity.FATAL, 302 refactoring.checkNewName(), RefactoringProblemSeverity.FATAL,
303 expectedMessage: 303 expectedMessage:
304 "The new name must be different than the current name."); 304 "The new name must be different than the current name.");
305 // OK 305 // OK
306 refactoring.newName = 'NewName'; 306 refactoring.newName = 'NewName';
307 assertRefactoringStatusOK(refactoring.checkNewName()); 307 assertRefactoringStatusOK(refactoring.checkNewName());
308 } 308 }
309 309
310 test_checkNewName_FunctionElement() { 310 test_checkNewName_FunctionElement() async {
311 indexTestUnit(''' 311 await indexTestUnit('''
312 test() {} 312 test() {}
313 '''); 313 ''');
314 createRenameRefactoringAtString('test() {}'); 314 createRenameRefactoringAtString('test() {}');
315 // null 315 // null
316 refactoring.newName = null; 316 refactoring.newName = null;
317 assertRefactoringStatus( 317 assertRefactoringStatus(
318 refactoring.checkNewName(), RefactoringProblemSeverity.FATAL, 318 refactoring.checkNewName(), RefactoringProblemSeverity.FATAL,
319 expectedMessage: "Function name must not be null."); 319 expectedMessage: "Function name must not be null.");
320 // empty 320 // empty
321 refactoring.newName = ''; 321 refactoring.newName = '';
322 assertRefactoringStatus( 322 assertRefactoringStatus(
323 refactoring.checkNewName(), RefactoringProblemSeverity.FATAL, 323 refactoring.checkNewName(), RefactoringProblemSeverity.FATAL,
324 expectedMessage: "Function name must not be empty."); 324 expectedMessage: "Function name must not be empty.");
325 // OK 325 // OK
326 refactoring.newName = 'newName'; 326 refactoring.newName = 'newName';
327 assertRefactoringStatusOK(refactoring.checkNewName()); 327 assertRefactoringStatusOK(refactoring.checkNewName());
328 } 328 }
329 329
330 test_checkNewName_FunctionTypeAliasElement() { 330 test_checkNewName_FunctionTypeAliasElement() async {
331 indexTestUnit(''' 331 await indexTestUnit('''
332 typedef Test(); 332 typedef Test();
333 '''); 333 ''');
334 createRenameRefactoringAtString('Test();'); 334 createRenameRefactoringAtString('Test();');
335 // null 335 // null
336 refactoring.newName = null; 336 refactoring.newName = null;
337 assertRefactoringStatus( 337 assertRefactoringStatus(
338 refactoring.checkNewName(), RefactoringProblemSeverity.FATAL, 338 refactoring.checkNewName(), RefactoringProblemSeverity.FATAL,
339 expectedMessage: "Function type alias name must not be null."); 339 expectedMessage: "Function type alias name must not be null.");
340 // OK 340 // OK
341 refactoring.newName = 'NewName'; 341 refactoring.newName = 'NewName';
342 assertRefactoringStatusOK(refactoring.checkNewName()); 342 assertRefactoringStatusOK(refactoring.checkNewName());
343 } 343 }
344 344
345 test_checkNewName_TopLevelVariableElement() { 345 test_checkNewName_TopLevelVariableElement() async {
346 indexTestUnit(''' 346 await indexTestUnit('''
347 var test; 347 var test;
348 '''); 348 ''');
349 createRenameRefactoringAtString('test;'); 349 createRenameRefactoringAtString('test;');
350 // null 350 // null
351 refactoring.newName = null; 351 refactoring.newName = null;
352 assertRefactoringStatus( 352 assertRefactoringStatus(
353 refactoring.checkNewName(), RefactoringProblemSeverity.FATAL, 353 refactoring.checkNewName(), RefactoringProblemSeverity.FATAL,
354 expectedMessage: "Variable name must not be null."); 354 expectedMessage: "Variable name must not be null.");
355 // empty 355 // empty
356 refactoring.newName = ''; 356 refactoring.newName = '';
357 assertRefactoringStatus( 357 assertRefactoringStatus(
358 refactoring.checkNewName(), RefactoringProblemSeverity.FATAL, 358 refactoring.checkNewName(), RefactoringProblemSeverity.FATAL,
359 expectedMessage: "Variable name must not be empty."); 359 expectedMessage: "Variable name must not be empty.");
360 // OK 360 // OK
361 refactoring.newName = 'newName'; 361 refactoring.newName = 'newName';
362 assertRefactoringStatusOK(refactoring.checkNewName()); 362 assertRefactoringStatusOK(refactoring.checkNewName());
363 } 363 }
364 364
365 test_createChange_ClassElement() { 365 test_createChange_ClassElement() async {
366 indexTestUnit(''' 366 await indexTestUnit('''
367 class Test implements Other { 367 class Test implements Other {
368 Test() {} 368 Test() {}
369 Test.named() {} 369 Test.named() {}
370 } 370 }
371 class Other { 371 class Other {
372 factory Other.a() = Test; 372 factory Other.a() = Test;
373 factory Other.b() = Test.named; 373 factory Other.b() = Test.named;
374 } 374 }
375 main() { 375 main() {
376 Test t1 = new Test(); 376 Test t1 = new Test();
(...skipping 16 matching lines...) Expand all
393 factory Other.a() = NewName; 393 factory Other.a() = NewName;
394 factory Other.b() = NewName.named; 394 factory Other.b() = NewName.named;
395 } 395 }
396 main() { 396 main() {
397 NewName t1 = new NewName(); 397 NewName t1 = new NewName();
398 NewName t2 = new NewName.named(); 398 NewName t2 = new NewName.named();
399 } 399 }
400 '''); 400 ''');
401 } 401 }
402 402
403 test_createChange_ClassElement_invocation() { 403 test_createChange_ClassElement_invocation() async {
404 verifyNoTestUnitErrors = false; 404 verifyNoTestUnitErrors = false;
405 indexTestUnit(''' 405 await indexTestUnit('''
406 class Test { 406 class Test {
407 } 407 }
408 main() { 408 main() {
409 Test(); // invalid code, but still a reference 409 Test(); // invalid code, but still a reference
410 } 410 }
411 '''); 411 ''');
412 // configure refactoring 412 // configure refactoring
413 createRenameRefactoringAtString('Test();'); 413 createRenameRefactoringAtString('Test();');
414 expect(refactoring.refactoringName, 'Rename Class'); 414 expect(refactoring.refactoringName, 'Rename Class');
415 expect(refactoring.elementKindName, 'class'); 415 expect(refactoring.elementKindName, 'class');
416 expect(refactoring.oldName, 'Test'); 416 expect(refactoring.oldName, 'Test');
417 refactoring.newName = 'NewName'; 417 refactoring.newName = 'NewName';
418 // validate change 418 // validate change
419 return assertSuccessfulRefactoring(''' 419 return assertSuccessfulRefactoring('''
420 class NewName { 420 class NewName {
421 } 421 }
422 main() { 422 main() {
423 NewName(); // invalid code, but still a reference 423 NewName(); // invalid code, but still a reference
424 } 424 }
425 '''); 425 ''');
426 } 426 }
427 427
428 test_createChange_ClassElement_parameterTypeNested() { 428 test_createChange_ClassElement_parameterTypeNested() async {
429 indexTestUnit(''' 429 await indexTestUnit('''
430 class Test { 430 class Test {
431 } 431 }
432 main(f(Test p)) { 432 main(f(Test p)) {
433 } 433 }
434 '''); 434 ''');
435 // configure refactoring 435 // configure refactoring
436 createRenameRefactoringAtString('Test {'); 436 createRenameRefactoringAtString('Test {');
437 expect(refactoring.refactoringName, 'Rename Class'); 437 expect(refactoring.refactoringName, 'Rename Class');
438 expect(refactoring.oldName, 'Test'); 438 expect(refactoring.oldName, 'Test');
439 refactoring.newName = 'NewName'; 439 refactoring.newName = 'NewName';
440 // validate change 440 // validate change
441 return assertSuccessfulRefactoring(''' 441 return assertSuccessfulRefactoring('''
442 class NewName { 442 class NewName {
443 } 443 }
444 main(f(NewName p)) { 444 main(f(NewName p)) {
445 } 445 }
446 '''); 446 ''');
447 } 447 }
448 448
449 test_createChange_ClassElement_typeAlias() { 449 test_createChange_ClassElement_typeAlias() async {
450 indexTestUnit(''' 450 await indexTestUnit('''
451 class A {} 451 class A {}
452 class Test = Object with A; 452 class Test = Object with A;
453 main(Test t) { 453 main(Test t) {
454 } 454 }
455 '''); 455 ''');
456 // configure refactoring 456 // configure refactoring
457 createRenameRefactoringAtString('Test ='); 457 createRenameRefactoringAtString('Test =');
458 expect(refactoring.refactoringName, 'Rename Class'); 458 expect(refactoring.refactoringName, 'Rename Class');
459 expect(refactoring.elementKindName, 'class'); 459 expect(refactoring.elementKindName, 'class');
460 expect(refactoring.oldName, 'Test'); 460 expect(refactoring.oldName, 'Test');
461 refactoring.newName = 'NewName'; 461 refactoring.newName = 'NewName';
462 // validate change 462 // validate change
463 return assertSuccessfulRefactoring(''' 463 return assertSuccessfulRefactoring('''
464 class A {} 464 class A {}
465 class NewName = Object with A; 465 class NewName = Object with A;
466 main(NewName t) { 466 main(NewName t) {
467 } 467 }
468 '''); 468 ''');
469 } 469 }
470 470
471 test_createChange_FunctionElement() { 471 test_createChange_FunctionElement() async {
472 indexTestUnit(''' 472 await indexTestUnit('''
473 test() {} 473 test() {}
474 foo() {} 474 foo() {}
475 main() { 475 main() {
476 print(test); 476 print(test);
477 print(test()); 477 print(test());
478 foo(); 478 foo();
479 } 479 }
480 '''); 480 ''');
481 // configure refactoring 481 // configure refactoring
482 createRenameRefactoringAtString('test() {}'); 482 createRenameRefactoringAtString('test() {}');
483 expect(refactoring.refactoringName, 'Rename Top-Level Function'); 483 expect(refactoring.refactoringName, 'Rename Top-Level Function');
484 expect(refactoring.elementKindName, 'function'); 484 expect(refactoring.elementKindName, 'function');
485 expect(refactoring.oldName, 'test'); 485 expect(refactoring.oldName, 'test');
486 refactoring.newName = 'newName'; 486 refactoring.newName = 'newName';
487 // validate change 487 // validate change
488 return assertSuccessfulRefactoring(''' 488 return assertSuccessfulRefactoring('''
489 newName() {} 489 newName() {}
490 foo() {} 490 foo() {}
491 main() { 491 main() {
492 print(newName); 492 print(newName);
493 print(newName()); 493 print(newName());
494 foo(); 494 foo();
495 } 495 }
496 '''); 496 ''');
497 } 497 }
498 498
499 test_createChange_FunctionElement_imported() async { 499 test_createChange_FunctionElement_imported() async {
500 indexUnit( 500 await indexUnit(
501 '/foo.dart', 501 '/foo.dart',
502 r''' 502 r'''
503 test() {} 503 test() {}
504 foo() {} 504 foo() {}
505 '''); 505 ''');
506 indexTestUnit(''' 506 await indexTestUnit('''
507 import 'foo.dart'; 507 import 'foo.dart';
508 main() { 508 main() {
509 print(test); 509 print(test);
510 print(test()); 510 print(test());
511 foo(); 511 foo();
512 } 512 }
513 '''); 513 ''');
514 // configure refactoring 514 // configure refactoring
515 createRenameRefactoringAtString('test);'); 515 createRenameRefactoringAtString('test);');
516 expect(refactoring.refactoringName, 'Rename Top-Level Function'); 516 expect(refactoring.refactoringName, 'Rename Top-Level Function');
(...skipping 10 matching lines...) Expand all
527 } 527 }
528 '''); 528 ''');
529 assertFileChangeResult( 529 assertFileChangeResult(
530 '/foo.dart', 530 '/foo.dart',
531 ''' 531 '''
532 newName() {} 532 newName() {}
533 foo() {} 533 foo() {}
534 '''); 534 ''');
535 } 535 }
536 536
537 test_createChange_PropertyAccessorElement_getter_declaration() { 537 test_createChange_PropertyAccessorElement_getter_declaration() async {
538 return _test_createChange_PropertyAccessorElement("test {}"); 538 await _test_createChange_PropertyAccessorElement("test {}");
539 } 539 }
540 540
541 test_createChange_PropertyAccessorElement_getter_usage() { 541 test_createChange_PropertyAccessorElement_getter_usage() async {
542 return _test_createChange_PropertyAccessorElement("test);"); 542 await _test_createChange_PropertyAccessorElement("test);");
543 } 543 }
544 544
545 test_createChange_PropertyAccessorElement_mix() { 545 test_createChange_PropertyAccessorElement_mix() async {
546 return _test_createChange_PropertyAccessorElement("test += 2"); 546 await _test_createChange_PropertyAccessorElement("test += 2");
547 } 547 }
548 548
549 test_createChange_PropertyAccessorElement_setter_declaration() { 549 test_createChange_PropertyAccessorElement_setter_declaration() async {
550 return _test_createChange_PropertyAccessorElement("test(x) {}"); 550 await _test_createChange_PropertyAccessorElement("test(x) {}");
551 } 551 }
552 552
553 test_createChange_PropertyAccessorElement_setter_usage() { 553 test_createChange_PropertyAccessorElement_setter_usage() async {
554 return _test_createChange_PropertyAccessorElement("test = 1"); 554 await _test_createChange_PropertyAccessorElement("test = 1");
555 } 555 }
556 556
557 test_createChange_TopLevelVariableElement_field() { 557 test_createChange_TopLevelVariableElement_field() async {
558 return _test_createChange_TopLevelVariableElement("test = 0"); 558 await _test_createChange_TopLevelVariableElement("test = 0");
559 } 559 }
560 560
561 test_createChange_TopLevelVariableElement_getter() { 561 test_createChange_TopLevelVariableElement_getter() async {
562 return _test_createChange_TopLevelVariableElement("test);"); 562 await _test_createChange_TopLevelVariableElement("test);");
563 } 563 }
564 564
565 test_createChange_TopLevelVariableElement_mix() { 565 test_createChange_TopLevelVariableElement_mix() async {
566 return _test_createChange_TopLevelVariableElement("test += 2"); 566 await _test_createChange_TopLevelVariableElement("test += 2");
567 } 567 }
568 568
569 test_createChange_TopLevelVariableElement_setter() { 569 test_createChange_TopLevelVariableElement_setter() async {
570 return _test_createChange_TopLevelVariableElement("test = 1"); 570 await _test_createChange_TopLevelVariableElement("test = 1");
571 } 571 }
572 572
573 _test_createChange_PropertyAccessorElement(String search) { 573 _test_createChange_PropertyAccessorElement(String search) async {
574 indexTestUnit(''' 574 await indexTestUnit('''
575 get test {} 575 get test {}
576 set test(x) {} 576 set test(x) {}
577 main() { 577 main() {
578 print(test); 578 print(test);
579 test = 1; 579 test = 1;
580 test += 2; 580 test += 2;
581 } 581 }
582 '''); 582 ''');
583 // configure refactoring 583 // configure refactoring
584 createRenameRefactoringAtString(search); 584 createRenameRefactoringAtString(search);
585 expect(refactoring.refactoringName, 'Rename Top-Level Variable'); 585 expect(refactoring.refactoringName, 'Rename Top-Level Variable');
586 expect(refactoring.oldName, 'test'); 586 expect(refactoring.oldName, 'test');
587 refactoring.newName = 'newName'; 587 refactoring.newName = 'newName';
588 // validate change 588 // validate change
589 return assertSuccessfulRefactoring(''' 589 return assertSuccessfulRefactoring('''
590 get newName {} 590 get newName {}
591 set newName(x) {} 591 set newName(x) {}
592 main() { 592 main() {
593 print(newName); 593 print(newName);
594 newName = 1; 594 newName = 1;
595 newName += 2; 595 newName += 2;
596 } 596 }
597 '''); 597 ''');
598 } 598 }
599 599
600 _test_createChange_TopLevelVariableElement(String search) { 600 _test_createChange_TopLevelVariableElement(String search) async {
601 indexTestUnit(''' 601 await indexTestUnit('''
602 int test = 0; 602 int test = 0;
603 main() { 603 main() {
604 print(test); 604 print(test);
605 test = 1; 605 test = 1;
606 test += 2; 606 test += 2;
607 } 607 }
608 '''); 608 ''');
609 // configure refactoring 609 // configure refactoring
610 createRenameRefactoringAtString(search); 610 createRenameRefactoringAtString(search);
611 expect(refactoring.refactoringName, 'Rename Top-Level Variable'); 611 expect(refactoring.refactoringName, 'Rename Top-Level Variable');
612 expect(refactoring.elementKindName, 'top level variable'); 612 expect(refactoring.elementKindName, 'top level variable');
613 expect(refactoring.oldName, 'test'); 613 expect(refactoring.oldName, 'test');
614 refactoring.newName = 'newName'; 614 refactoring.newName = 'newName';
615 // validate change 615 // validate change
616 return assertSuccessfulRefactoring(''' 616 return assertSuccessfulRefactoring('''
617 int newName = 0; 617 int newName = 0;
618 main() { 618 main() {
619 print(newName); 619 print(newName);
620 newName = 1; 620 newName = 1;
621 newName += 2; 621 newName += 2;
622 } 622 }
623 '''); 623 ''');
624 } 624 }
625 } 625 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698