| 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.edit.refactoring; | 5 library test.edit.refactoring; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 | 8 |
| 9 import 'package:analysis_server/src/constants.dart'; | 9 import 'package:analysis_server/src/constants.dart'; |
| 10 import 'package:analysis_server/src/edit/edit_domain.dart'; | 10 import 'package:analysis_server/src/edit/edit_domain.dart'; |
| 11 import 'package:analysis_server/src/protocol.dart'; | 11 import 'package:analysis_server/src/protocol.dart'; |
| 12 import 'package:analysis_testing/reflective_tests.dart'; | 12 import 'package:analysis_testing/reflective_tests.dart'; |
| 13 import 'package:unittest/unittest.dart' hide ERROR; | 13 import 'package:unittest/unittest.dart' hide ERROR; |
| 14 | 14 |
| 15 import '../analysis_abstract.dart'; | 15 import '../analysis_abstract.dart'; |
| 16 | 16 |
| 17 | 17 |
| 18 main() { | 18 main() { |
| 19 groupSep = ' | '; | 19 groupSep = ' | '; |
| 20 runReflectiveTests(GetAvailableRefactoringsTest); | 20 runReflectiveTests(GetAvailableRefactoringsTest); |
| 21 } | 21 } |
| 22 | 22 |
| 23 | 23 |
| 24 @ReflectiveTestCase() | 24 @ReflectiveTestCase() |
| 25 class GetAvailableRefactoringsTest extends AbstractAnalysisTest { | 25 class GetAvailableRefactoringsTest extends AbstractAnalysisTest { |
| 26 /** |
| 27 * Tests that there is a RENAME refactoring available at the [search] offset. |
| 28 */ |
| 26 Future assertHasRenameRefactoring(String code, String search) { | 29 Future assertHasRenameRefactoring(String code, String search) { |
| 27 addTestFile(code); | 30 addTestFile(code); |
| 28 return waitForTasksFinished().then((_) { | 31 return waitForTasksFinished().then((_) { |
| 29 List<String> kinds = getAvailableRefactorings(search); | 32 List<String> kinds = getAvailableRefactorings(search); |
| 30 expect(kinds, contains(RefactoringKind.RENAME)); | 33 expect(kinds, contains(RefactoringKind.RENAME)); |
| 31 }); | 34 }); |
| 32 } | 35 } |
| 33 | 36 |
| 37 /** |
| 38 * Returns the list of available refactorings of the offset of [search] with |
| 39 * [length] characters selected. |
| 40 */ |
| 34 List<String> getAvailableRefactorings(String search, [int length = 0]) { | 41 List<String> getAvailableRefactorings(String search, [int length = 0]) { |
| 35 Request request = new Request('0', EDIT_GET_AVAILABLE_REFACTORINGS); | 42 Request request = new Request('0', EDIT_GET_AVAILABLE_REFACTORINGS); |
| 36 request.setParameter(FILE, testFile); | 43 request.setParameter(FILE, testFile); |
| 37 request.setParameter(OFFSET, findOffset(search)); | 44 request.setParameter(OFFSET, findOffset(search)); |
| 38 request.setParameter(LENGTH, length); | 45 request.setParameter(LENGTH, length); |
| 39 Response response = handleSuccessfulRequest(request); | 46 Response response = handleSuccessfulRequest(request); |
| 40 return response.getResult(KINDS); | 47 return response.getResult(KINDS); |
| 41 } | 48 } |
| 42 | 49 |
| 43 @override | 50 @override |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 78 | 85 |
| 79 Future test_rename_hasElement_importElement_directive() { | 86 Future test_rename_hasElement_importElement_directive() { |
| 80 return assertHasRenameRefactoring(''' | 87 return assertHasRenameRefactoring(''' |
| 81 import 'dart:math' as math; | 88 import 'dart:math' as math; |
| 82 main() { | 89 main() { |
| 83 math.PI; | 90 math.PI; |
| 84 } | 91 } |
| 85 ''', 'import '); | 92 ''', 'import '); |
| 86 } | 93 } |
| 87 | 94 |
| 95 Future test_rename_hasElement_importElement_prefixDecl() { |
| 96 return assertHasRenameRefactoring(''' |
| 97 import 'dart:math' as math; |
| 98 main() { |
| 99 math.PI; |
| 100 } |
| 101 ''', 'math;'); |
| 102 } |
| 103 |
| 104 Future test_rename_hasElement_importElement_prefixRef() { |
| 105 return assertHasRenameRefactoring(''' |
| 106 import 'dart:async' as test; |
| 107 import 'dart:math' as test; |
| 108 main() { |
| 109 test.PI; |
| 110 } |
| 111 ''', 'test.PI;'); |
| 112 } |
| 113 |
| 88 Future test_rename_hasElement_instanceGetter() { | 114 Future test_rename_hasElement_instanceGetter() { |
| 89 return assertHasRenameRefactoring(''' | 115 return assertHasRenameRefactoring(''' |
| 90 class A { | 116 class A { |
| 91 get test => 0; | 117 get test => 0; |
| 92 } | 118 } |
| 93 main(A a) { | 119 main(A a) { |
| 94 a.test; | 120 a.test; |
| 95 } | 121 } |
| 96 ''', 'test;'); | 122 ''', 'test;'); |
| 97 } | 123 } |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 main() { | 164 main() { |
| 139 // not an element | 165 // not an element |
| 140 } | 166 } |
| 141 '''); | 167 '''); |
| 142 return waitForTasksFinished().then((_) { | 168 return waitForTasksFinished().then((_) { |
| 143 List<String> kinds = getAvailableRefactorings('// not an element'); | 169 List<String> kinds = getAvailableRefactorings('// not an element'); |
| 144 expect(kinds, isNot(contains(RefactoringKind.RENAME))); | 170 expect(kinds, isNot(contains(RefactoringKind.RENAME))); |
| 145 }); | 171 }); |
| 146 } | 172 } |
| 147 } | 173 } |
| OLD | NEW |