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

Side by Side Diff: pkg/analysis_services/test/refactoring/rename_unit_member_test.dart

Issue 484733003: Import analysis_services.dart into analysis_server.dart. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 4 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
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 library test.services.refactoring.rename_unit_member;
6
7 import 'package:analysis_services/correction/status.dart';
8 import 'package:analysis_testing/reflective_tests.dart';
9 import 'package:unittest/unittest.dart';
10
11 import 'abstract_rename.dart';
12
13
14 main() {
15 groupSep = ' | ';
16 runReflectiveTests(RenameUnitMemberTest);
17 }
18
19
20 @ReflectiveTestCase()
21 class RenameUnitMemberTest extends RenameRefactoringTest {
22 test_checkFinalConditions_OK_qualifiedSuper_MethodElement() {
23 indexTestUnit('''
24 class Test {}
25 class A {
26 NewName() {}
27 }
28 class B extends A {
29 main() {
30 super.NewName(); // super-ref
31 }
32 }
33 ''');
34 createRenameRefactoringAtString('Test {}');
35 // check status
36 refactoring.newName = 'NewName';
37 return refactoring.checkFinalConditions().then((status) {
38 assertRefactoringStatusOK(status);
39 });
40 }
41
42 test_checkFinalConditions_hasTopLevel_ClassElement() {
43 indexTestUnit('''
44 class Test {}
45 class NewName {} // existing
46 ''');
47 createRenameRefactoringAtString('Test {}');
48 // check status
49 refactoring.newName = 'NewName';
50 return refactoring.checkFinalConditions().then((status) {
51 assertRefactoringStatus(
52 status,
53 RefactoringStatusSeverity.ERROR,
54 expectedMessage: "Library already declares class with name 'NewName'." ,
55 expectedContextSearch: 'NewName {} // existing');
56 });
57 }
58
59 test_checkFinalConditions_hasTopLevel_FunctionTypeAliasElement() {
60 indexTestUnit('''
61 class Test {}
62 typedef NewName(); // existing
63 ''');
64 createRenameRefactoringAtString('Test {}');
65 // check status
66 refactoring.newName = 'NewName';
67 return refactoring.checkFinalConditions().then((status) {
68 assertRefactoringStatus(
69 status,
70 RefactoringStatusSeverity.ERROR,
71 expectedMessage:
72 "Library already declares function type alias with name 'NewName'. ",
73 expectedContextSearch: 'NewName(); // existing');
74 });
75 }
76
77 test_checkFinalConditions_shadowedBy_MethodElement() {
78 indexTestUnit('''
79 class Test {}
80 class A {
81 void NewName() {}
82 main() {
83 new Test();
84 }
85 }
86 ''');
87 createRenameRefactoringAtString('Test {}');
88 // check status
89 refactoring.newName = 'NewName';
90 return refactoring.checkFinalConditions().then((status) {
91 assertRefactoringStatus(
92 status,
93 RefactoringStatusSeverity.ERROR,
94 expectedMessage:
95 "Reference to renamed class will be shadowed by method 'A.NewName' .",
96 expectedContextSearch: 'NewName() {}');
97 });
98 }
99
100 test_checkFinalConditions_shadowsInSubClass_MethodElement() {
101 indexTestUnit('''
102 class Test {}
103 class A {
104 NewName() {}
105 }
106 class B extends A {
107 main() {
108 NewName(); // super-ref
109 }
110 }
111 ''');
112 createRenameRefactoringAtString('Test {}');
113 // check status
114 refactoring.newName = 'NewName';
115 return refactoring.checkFinalConditions().then((status) {
116 assertRefactoringStatus(
117 status,
118 RefactoringStatusSeverity.ERROR,
119 expectedMessage: "Renamed class will shadow method 'A.NewName'.",
120 expectedContextSearch: 'NewName(); // super-ref');
121 });
122 }
123
124 test_checkFinalConditions_shadowsInSubClass_importedLib() {
125 indexTestUnit('''
126 class Test {}
127 ''');
128 indexUnit('/lib.dart', '''
129 library my.lib;
130 import 'test.dart';
131 class A {
132 NewName() {}
133 }
134 class B extends A {
135 main() {
136 NewName(); // super-ref
137 }",
138 }
139 ''');
140 createRenameRefactoringAtString('Test {}');
141 // check status
142 refactoring.newName = 'NewName';
143 return refactoring.checkFinalConditions().then((status) {
144 assertRefactoringStatus(
145 status,
146 RefactoringStatusSeverity.ERROR,
147 expectedMessage: "Renamed class will shadow method 'A.NewName'.");
148 });
149 }
150
151 test_checkFinalConditions_shadowsInSubClass_importedLib_hideCombinator() {
152 indexTestUnit('''
153 class Test {}
154 ''');
155 indexUnit('/lib.dart', '''
156 library my.lib;
157 import 'test.dart' hide Test;
158 class A {
159 NewName() {}
160 }
161 class B extends A {
162 main() {
163 NewName(); // super-ref
164 }",
165 }
166 ''');
167 createRenameRefactoringAtString('Test {}');
168 // check status
169 refactoring.newName = 'NewName';
170 return refactoring.checkFinalConditions().then((status) {
171 assertRefactoringStatusOK(status);
172 });
173 }
174
175 test_checkFinalConditions_shadowsInSubClass_notImportedLib() {
176 indexTestUnit('''
177 class Test {}
178 ''');
179 indexUnit('/lib.dart', '''
180 library my.lib;
181 class A {
182 NewName() {}
183 }
184 class B extends A {
185 main() {
186 NewName(); // super-ref
187 }",
188 }
189 ''');
190 createRenameRefactoringAtString('Test {}');
191 // check status
192 refactoring.newName = 'NewName';
193 return refactoring.checkFinalConditions().then((status) {
194 assertRefactoringStatusOK(status);
195 });
196 }
197
198 test_checkFinalConditions_shadowsInSubClass_notSubClass() {
199 indexTestUnit('''
200 class Test {}
201 class A {
202 NewName() {}
203 }
204 class B {
205 main(A a) {
206 a.NewName();
207 }
208 }
209 ''');
210 createRenameRefactoringAtString('Test {}');
211 // check status
212 refactoring.newName = 'NewName';
213 return refactoring.checkFinalConditions().then((status) {
214 assertRefactoringStatusOK(status);
215 });
216 }
217
218 test_checkNewName_ClassElement() {
219 indexTestUnit('''
220 class Test {}
221 ''');
222 createRenameRefactoringAtString('Test {}');
223 // null
224 refactoring.newName = null;
225 assertRefactoringStatus(
226 refactoring.checkNewName(),
227 RefactoringStatusSeverity.ERROR,
228 expectedMessage: "Class name must not be null.");
229 // empty
230 refactoring.newName = '';
231 assertRefactoringStatus(
232 refactoring.checkNewName(),
233 RefactoringStatusSeverity.ERROR,
234 expectedMessage: "Class name must not be empty.");
235 // same
236 refactoring.newName = 'Test';
237 assertRefactoringStatus(
238 refactoring.checkNewName(),
239 RefactoringStatusSeverity.FATAL,
240 expectedMessage: "The new name must be different than the current name." );
241 // OK
242 refactoring.newName = 'NewName';
243 assertRefactoringStatusOK(refactoring.checkNewName());
244 }
245
246 test_checkNewName_FunctionElement() {
247 indexTestUnit('''
248 test() {}
249 ''');
250 createRenameRefactoringAtString('test() {}');
251 // null
252 refactoring.newName = null;
253 assertRefactoringStatus(
254 refactoring.checkNewName(),
255 RefactoringStatusSeverity.ERROR,
256 expectedMessage: "Function name must not be null.");
257 // empty
258 refactoring.newName = '';
259 assertRefactoringStatus(
260 refactoring.checkNewName(),
261 RefactoringStatusSeverity.ERROR,
262 expectedMessage: "Function name must not be empty.");
263 // OK
264 refactoring.newName = 'newName';
265 assertRefactoringStatusOK(refactoring.checkNewName());
266 }
267
268 test_checkNewName_FunctionTypeAliasElement() {
269 indexTestUnit('''
270 typedef Test();
271 ''');
272 createRenameRefactoringAtString('Test();');
273 // null
274 refactoring.newName = null;
275 assertRefactoringStatus(
276 refactoring.checkNewName(),
277 RefactoringStatusSeverity.ERROR,
278 expectedMessage: "Function type alias name must not be null.");
279 // OK
280 refactoring.newName = 'NewName';
281 assertRefactoringStatusOK(refactoring.checkNewName());
282 }
283
284 test_checkNewName_TopLevelVariableElement() {
285 indexTestUnit('''
286 var test;
287 ''');
288 createRenameRefactoringAtString('test;');
289 // null
290 refactoring.newName = null;
291 assertRefactoringStatus(
292 refactoring.checkNewName(),
293 RefactoringStatusSeverity.ERROR,
294 expectedMessage: "Variable name must not be null.");
295 // empty
296 refactoring.newName = '';
297 assertRefactoringStatus(
298 refactoring.checkNewName(),
299 RefactoringStatusSeverity.ERROR,
300 expectedMessage: "Variable name must not be empty.");
301 // OK
302 refactoring.newName = 'newName';
303 assertRefactoringStatusOK(refactoring.checkNewName());
304 }
305
306 test_checkNewName_TopLevelVariableElement_const() {
307 indexTestUnit('''
308 const TEST = 0;
309 ''');
310 createRenameRefactoringAtString('TEST =');
311 // null
312 refactoring.newName = null;
313 assertRefactoringStatus(
314 refactoring.checkNewName(),
315 RefactoringStatusSeverity.ERROR,
316 expectedMessage: "Constant name must not be null.");
317 // empty
318 refactoring.newName = '';
319 assertRefactoringStatus(
320 refactoring.checkNewName(),
321 RefactoringStatusSeverity.ERROR,
322 expectedMessage: "Constant name must not be empty.");
323 // OK
324 refactoring.newName = 'NEW_NAME';
325 assertRefactoringStatusOK(refactoring.checkNewName());
326 }
327
328 test_createChange_ClassElement() {
329 indexTestUnit('''
330 class Test implements Other {
331 Test() {}
332 Test.named() {}
333 }
334 class Other {
335 factory Other.a() = Test;
336 factory Other.b() = Test.named;
337 }
338 main() {
339 Test t1 = new Test();
340 Test t2 = new Test.named();
341 }
342 ''');
343 // configure refactoring
344 createRenameRefactoringAtString('Test implements');
345 expect(refactoring.refactoringName, 'Rename Class');
346 expect(refactoring.oldName, 'Test');
347 refactoring.newName = 'NewName';
348 // validate change
349 return assertSuccessfulRename('''
350 class NewName implements Other {
351 NewName() {}
352 NewName.named() {}
353 }
354 class Other {
355 factory Other.a() = NewName;
356 factory Other.b() = NewName.named;
357 }
358 main() {
359 NewName t1 = new NewName();
360 NewName t2 = new NewName.named();
361 }
362 ''');
363 }
364
365 test_createChange_ClassElement_parameterTypeNested() {
366 indexTestUnit('''
367 class Test {
368 }
369 main(f(Test p)) {
370 }
371 ''');
372 // configure refactoring
373 createRenameRefactoringAtString('Test {');
374 expect(refactoring.refactoringName, 'Rename Class');
375 expect(refactoring.oldName, 'Test');
376 refactoring.newName = 'NewName';
377 // validate change
378 return assertSuccessfulRename('''
379 class NewName {
380 }
381 main(f(NewName p)) {
382 }
383 ''');
384 }
385
386 test_createChange_ClassElement_typeAlias() {
387 indexTestUnit('''
388 class A {}
389 class Test = Object with A;
390 main(Test t) {
391 }
392 ''');
393 // configure refactoring
394 createRenameRefactoringAtString('Test =');
395 expect(refactoring.refactoringName, 'Rename Class');
396 expect(refactoring.oldName, 'Test');
397 refactoring.newName = 'NewName';
398 // validate change
399 return assertSuccessfulRename('''
400 class A {}
401 class NewName = Object with A;
402 main(NewName t) {
403 }
404 ''');
405 }
406
407 test_createChange_FunctionElement() {
408 indexTestUnit('''
409 test() {}
410 foo() {}
411 main() {
412 print(test);
413 print(test());
414 foo();
415 }
416 ''');
417 // configure refactoring
418 createRenameRefactoringAtString('test() {}');
419 expect(refactoring.refactoringName, 'Rename Top-Level Function');
420 expect(refactoring.oldName, 'test');
421 refactoring.newName = 'newName';
422 // validate change
423 return assertSuccessfulRename('''
424 newName() {}
425 foo() {}
426 main() {
427 print(newName);
428 print(newName());
429 foo();
430 }
431 ''');
432 }
433
434 test_createChange_PropertyAccessorElement_getter_declaration() {
435 return _test_createChange_PropertyAccessorElement("test {}");
436 }
437
438 test_createChange_PropertyAccessorElement_getter_usage() {
439 return _test_createChange_PropertyAccessorElement("test);");
440 }
441
442 test_createChange_PropertyAccessorElement_mix() {
443 return _test_createChange_PropertyAccessorElement("test += 2");
444 }
445
446 test_createChange_PropertyAccessorElement_setter_declaration() {
447 return _test_createChange_PropertyAccessorElement("test(x) {}");
448 }
449
450 test_createChange_PropertyAccessorElement_setter_usage() {
451 return _test_createChange_PropertyAccessorElement("test = 1");
452 }
453
454 test_createChange_TopLevelVariableElement_field() {
455 return _test_createChange_TopLevelVariableElement("test = 0");
456 }
457
458 test_createChange_TopLevelVariableElement_getter() {
459 return _test_createChange_TopLevelVariableElement("test);");
460 }
461
462 test_createChange_TopLevelVariableElement_mix() {
463 return _test_createChange_TopLevelVariableElement("test += 2");
464 }
465
466 test_createChange_TopLevelVariableElement_setter() {
467 return _test_createChange_TopLevelVariableElement("test = 1");
468 }
469
470 _test_createChange_PropertyAccessorElement(String search) {
471 indexTestUnit('''
472 get test {}
473 set test(x) {}
474 main() {
475 print(test);
476 test = 1;
477 test += 2;
478 }
479 ''');
480 // configure refactoring
481 createRenameRefactoringAtString(search);
482 expect(refactoring.refactoringName, 'Rename Top-Level Variable');
483 expect(refactoring.oldName, 'test');
484 refactoring.newName = 'newName';
485 // validate change
486 return assertSuccessfulRename('''
487 get newName {}
488 set newName(x) {}
489 main() {
490 print(newName);
491 newName = 1;
492 newName += 2;
493 }
494 ''');
495 }
496
497 _test_createChange_TopLevelVariableElement(String search) {
498 indexTestUnit('''
499 int test = 0;
500 main() {
501 print(test);
502 test = 1;
503 test += 2;
504 }
505 ''');
506 // configure refactoring
507 createRenameRefactoringAtString(search);
508 expect(refactoring.refactoringName, 'Rename Top-Level Variable');
509 expect(refactoring.oldName, 'test');
510 refactoring.newName = 'newName';
511 // validate change
512 return assertSuccessfulRename('''
513 int newName = 0;
514 main() {
515 print(newName);
516 newName = 1;
517 newName += 2;
518 }
519 ''');
520 }
521 }
OLDNEW
« no previous file with comments | « pkg/analysis_services/test/refactoring/rename_local_test.dart ('k') | pkg/analysis_services/test/refactoring/test_all.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698