OLD | NEW |
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_local; | 5 library test.services.refactoring.rename_local; |
6 | 6 |
7 import 'package:analysis_server/src/protocol.dart'; | 7 import 'package:analysis_server/src/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_reflective_loader/test_reflective_loader.dart'; | 9 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
10 import 'package:unittest/unittest.dart'; | 10 import 'package:unittest/unittest.dart'; |
11 | 11 |
| 12 import '../../utils.dart'; |
12 import 'abstract_rename.dart'; | 13 import 'abstract_rename.dart'; |
13 | 14 |
14 main() { | 15 main() { |
15 groupSep = ' | '; | 16 initializeTestEnvironment(); |
16 defineReflectiveTests(RenameLocalTest); | 17 defineReflectiveTests(RenameLocalTest); |
17 } | 18 } |
18 | 19 |
19 @reflectiveTest | 20 @reflectiveTest |
20 class RenameLocalTest extends RenameRefactoringTest { | 21 class RenameLocalTest extends RenameRefactoringTest { |
21 test_checkFinalConditions_hasLocalFunction_after() async { | 22 test_checkFinalConditions_hasLocalFunction_after() async { |
22 indexTestUnit(''' | 23 indexTestUnit(''' |
23 main() { | 24 main() { |
24 int test = 0; | 25 int test = 0; |
25 newName() => 1; | 26 newName() => 1; |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
124 print(newName); | 125 print(newName); |
125 } | 126 } |
126 } | 127 } |
127 '''); | 128 '''); |
128 createRenameRefactoringAtString('test = 0'); | 129 createRenameRefactoringAtString('test = 0'); |
129 // check status | 130 // check status |
130 refactoring.newName = 'newName'; | 131 refactoring.newName = 'newName'; |
131 RefactoringStatus status = await refactoring.checkFinalConditions(); | 132 RefactoringStatus status = await refactoring.checkFinalConditions(); |
132 assertRefactoringStatus(status, RefactoringProblemSeverity.ERROR, | 133 assertRefactoringStatus(status, RefactoringProblemSeverity.ERROR, |
133 expectedMessage: 'Usage of field "A.newName" declared in "test.dart" ' | 134 expectedMessage: 'Usage of field "A.newName" declared in "test.dart" ' |
134 'will be shadowed by renamed local variable.', | 135 'will be shadowed by renamed local variable.', |
135 expectedContextSearch: 'newName);'); | 136 expectedContextSearch: 'newName);'); |
136 } | 137 } |
137 | 138 |
138 test_checkFinalConditions_shadows_classMember_namedParameter() async { | 139 test_checkFinalConditions_shadows_classMember_namedParameter() async { |
139 indexTestUnit(''' | 140 indexTestUnit(''' |
140 class A { | 141 class A { |
141 foo({test: 1}) { | 142 foo({test: 1}) { |
142 } | 143 } |
143 } | 144 } |
144 class B extends A { | 145 class B extends A { |
145 var newName = 1; | 146 var newName = 1; |
146 foo({test: 2}) { | 147 foo({test: 2}) { |
147 print(newName); | 148 print(newName); |
148 } | 149 } |
149 } | 150 } |
150 '''); | 151 '''); |
151 createRenameRefactoringAtString('test: 1}'); | 152 createRenameRefactoringAtString('test: 1}'); |
152 // check status | 153 // check status |
153 refactoring.newName = 'newName'; | 154 refactoring.newName = 'newName'; |
154 RefactoringStatus status = await refactoring.checkFinalConditions(); | 155 RefactoringStatus status = await refactoring.checkFinalConditions(); |
155 assertRefactoringStatus(status, RefactoringProblemSeverity.ERROR, | 156 assertRefactoringStatus(status, RefactoringProblemSeverity.ERROR, |
156 expectedMessage: 'Usage of field "B.newName" declared in "test.dart" ' | 157 expectedMessage: 'Usage of field "B.newName" declared in "test.dart" ' |
157 'will be shadowed by renamed parameter.', | 158 'will be shadowed by renamed parameter.', |
158 expectedContextSearch: 'newName);'); | 159 expectedContextSearch: 'newName);'); |
159 } | 160 } |
160 | 161 |
161 test_checkFinalConditions_shadows_classMemberOK_qualifiedReference() { | 162 test_checkFinalConditions_shadows_classMemberOK_qualifiedReference() { |
162 indexTestUnit(''' | 163 indexTestUnit(''' |
163 class A { | 164 class A { |
164 var newName = 1; | 165 var newName = 1; |
165 main() { | 166 main() { |
166 var test = 0; | 167 var test = 0; |
167 print(this.newName); | 168 print(this.newName); |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
415 } | 416 } |
416 '''); | 417 '''); |
417 } | 418 } |
418 | 419 |
419 test_createChange_parameter_named_inOtherFile() async { | 420 test_createChange_parameter_named_inOtherFile() async { |
420 indexTestUnit(''' | 421 indexTestUnit(''' |
421 class A { | 422 class A { |
422 A({test}); | 423 A({test}); |
423 } | 424 } |
424 '''); | 425 '''); |
425 indexUnit('/test2.dart', ''' | 426 indexUnit( |
| 427 '/test2.dart', |
| 428 ''' |
426 import 'test.dart'; | 429 import 'test.dart'; |
427 main() { | 430 main() { |
428 new A(test: 2); | 431 new A(test: 2); |
429 } | 432 } |
430 '''); | 433 '''); |
431 // configure refactoring | 434 // configure refactoring |
432 createRenameRefactoringAtString('test});'); | 435 createRenameRefactoringAtString('test});'); |
433 expect(refactoring.refactoringName, 'Rename Parameter'); | 436 expect(refactoring.refactoringName, 'Rename Parameter'); |
434 refactoring.newName = 'newName'; | 437 refactoring.newName = 'newName'; |
435 // validate change | 438 // validate change |
436 await assertSuccessfulRefactoring(''' | 439 await assertSuccessfulRefactoring(''' |
437 class A { | 440 class A { |
438 A({newName}); | 441 A({newName}); |
439 } | 442 } |
440 '''); | 443 '''); |
441 assertFileChangeResult('/test2.dart', ''' | 444 assertFileChangeResult( |
| 445 '/test2.dart', |
| 446 ''' |
442 import 'test.dart'; | 447 import 'test.dart'; |
443 main() { | 448 main() { |
444 new A(newName: 2); | 449 new A(newName: 2); |
445 } | 450 } |
446 '''); | 451 '''); |
447 } | 452 } |
448 | 453 |
449 test_createChange_parameter_named_updateHierarchy() async { | 454 test_createChange_parameter_named_updateHierarchy() async { |
450 indexUnit('/test2.dart', ''' | 455 indexUnit( |
| 456 '/test2.dart', |
| 457 ''' |
451 library test2; | 458 library test2; |
452 class A { | 459 class A { |
453 void foo({int test: 1}) { | 460 void foo({int test: 1}) { |
454 print(test); | 461 print(test); |
455 } | 462 } |
456 } | 463 } |
457 class B extends A { | 464 class B extends A { |
458 void foo({int test: 2}) { | 465 void foo({int test: 2}) { |
459 print(test); | 466 print(test); |
460 } | 467 } |
(...skipping 23 matching lines...) Expand all Loading... |
484 new A().foo(newName: 10); | 491 new A().foo(newName: 10); |
485 new B().foo(newName: 20); | 492 new B().foo(newName: 20); |
486 new C().foo(newName: 30); | 493 new C().foo(newName: 30); |
487 } | 494 } |
488 class C extends A { | 495 class C extends A { |
489 void foo({int newName: 3}) { | 496 void foo({int newName: 3}) { |
490 print(newName); | 497 print(newName); |
491 } | 498 } |
492 } | 499 } |
493 '''); | 500 '''); |
494 assertFileChangeResult('/test2.dart', ''' | 501 assertFileChangeResult( |
| 502 '/test2.dart', |
| 503 ''' |
495 library test2; | 504 library test2; |
496 class A { | 505 class A { |
497 void foo({int newName: 1}) { | 506 void foo({int newName: 1}) { |
498 print(newName); | 507 print(newName); |
499 } | 508 } |
500 } | 509 } |
501 class B extends A { | 510 class B extends A { |
502 void foo({int newName: 2}) { | 511 void foo({int newName: 2}) { |
503 print(newName); | 512 print(newName); |
504 } | 513 } |
505 } | 514 } |
506 '''); | 515 '''); |
507 } | 516 } |
508 | 517 |
509 test_oldName() { | 518 test_oldName() { |
510 indexTestUnit(''' | 519 indexTestUnit(''' |
511 main() { | 520 main() { |
512 int test = 0; | 521 int test = 0; |
513 } | 522 } |
514 '''); | 523 '''); |
515 // configure refactoring | 524 // configure refactoring |
516 createRenameRefactoringAtString('test = 0'); | 525 createRenameRefactoringAtString('test = 0'); |
517 // old name | 526 // old name |
518 expect(refactoring.oldName, 'test'); | 527 expect(refactoring.oldName, 'test'); |
519 } | 528 } |
520 } | 529 } |
OLD | NEW |