| 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/edit/edit_domain.dart'; | 9 import 'package:analysis_server/src/edit/edit_domain.dart'; |
| 10 import 'package:analysis_server/src/plugin/server_plugin.dart'; |
| 10 import 'package:analysis_server/src/protocol.dart'; | 11 import 'package:analysis_server/src/protocol.dart'; |
| 11 import 'package:analysis_server/src/services/index/index.dart'; | 12 import 'package:analysis_server/src/services/index/index.dart'; |
| 12 import 'package:analysis_server/src/services/index/local_memory_index.dart'; | 13 import 'package:analysis_server/src/services/index/local_memory_index.dart'; |
| 14 import 'package:analyzer/src/plugin/plugin_impl.dart'; |
| 13 import 'package:unittest/unittest.dart' hide ERROR; | 15 import 'package:unittest/unittest.dart' hide ERROR; |
| 14 | 16 |
| 15 import '../analysis_abstract.dart'; | 17 import '../analysis_abstract.dart'; |
| 16 import '../mocks.dart'; | 18 import '../mocks.dart'; |
| 17 import '../reflective_tests.dart'; | 19 import '../reflective_tests.dart'; |
| 18 | 20 |
| 19 main() { | 21 main() { |
| 20 groupSep = ' | '; | 22 groupSep = ' | '; |
| 21 runReflectiveTests(ConvertGetterMethodToMethodTest); | 23 runReflectiveTests(ConvertGetterMethodToMethodTest); |
| 22 runReflectiveTests(ConvertMethodToGetterTest); | 24 runReflectiveTests(ConvertMethodToGetterTest); |
| (...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 602 offset = findOffset(search); | 604 offset = findOffset(search); |
| 603 length = search.length; | 605 length = search.length; |
| 604 } | 606 } |
| 605 } | 607 } |
| 606 | 608 |
| 607 @reflectiveTest | 609 @reflectiveTest |
| 608 class GetAvailableRefactoringsTest extends AbstractAnalysisTest { | 610 class GetAvailableRefactoringsTest extends AbstractAnalysisTest { |
| 609 List<RefactoringKind> kinds; | 611 List<RefactoringKind> kinds; |
| 610 | 612 |
| 611 /** | 613 /** |
| 612 * Tests that there is a RENAME refactoring available at the [search] offset. | |
| 613 */ | |
| 614 Future assertHasRenameRefactoring(String code, String search) async { | |
| 615 return assertHasKind(code, search, RefactoringKind.RENAME, true); | |
| 616 } | |
| 617 | |
| 618 /** | |
| 619 * Tests that there is refactoring of the given [kind] is available at the | 614 * Tests that there is refactoring of the given [kind] is available at the |
| 620 * [search] offset. | 615 * [search] offset. |
| 621 */ | 616 */ |
| 622 Future assertHasKind( | 617 Future assertHasKind( |
| 623 String code, String search, RefactoringKind kind, bool expected) async { | 618 String code, String search, RefactoringKind kind, bool expected) async { |
| 624 addTestFile(code); | 619 addTestFile(code); |
| 625 await waitForTasksFinished(); | 620 await waitForTasksFinished(); |
| 626 await getRefactoringsAtString(search); | 621 await getRefactoringsAtString(search); |
| 627 // verify | 622 // verify |
| 628 Matcher matcher = contains(kind); | 623 Matcher matcher = contains(kind); |
| 629 if (!expected) { | 624 if (!expected) { |
| 630 matcher = isNot(matcher); | 625 matcher = isNot(matcher); |
| 631 } | 626 } |
| 632 expect(kinds, matcher); | 627 expect(kinds, matcher); |
| 633 } | 628 } |
| 634 | 629 |
| 630 /** |
| 631 * Tests that there is a RENAME refactoring available at the [search] offset. |
| 632 */ |
| 633 Future assertHasRenameRefactoring(String code, String search) async { |
| 634 return assertHasKind(code, search, RefactoringKind.RENAME, true); |
| 635 } |
| 636 |
| 635 @override | 637 @override |
| 636 Index createIndex() { | 638 Index createIndex() { |
| 637 return createLocalMemoryIndex(); | 639 return createLocalMemoryIndex(); |
| 638 } | 640 } |
| 639 | 641 |
| 640 /** | 642 /** |
| 641 * Returns the list of available refactorings for the given [offset] and | 643 * Returns the list of available refactorings for the given [offset] and |
| 642 * [length]. | 644 * [length]. |
| 643 */ | 645 */ |
| 644 Future getRefactorings(int offset, int length) async { | 646 Future getRefactorings(int offset, int length) async { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 660 | 662 |
| 661 Future getRefactoringsForString(String search) { | 663 Future getRefactoringsForString(String search) { |
| 662 int offset = findOffset(search); | 664 int offset = findOffset(search); |
| 663 return getRefactorings(offset, search.length); | 665 return getRefactorings(offset, search.length); |
| 664 } | 666 } |
| 665 | 667 |
| 666 @override | 668 @override |
| 667 void setUp() { | 669 void setUp() { |
| 668 super.setUp(); | 670 super.setUp(); |
| 669 createProject(); | 671 createProject(); |
| 670 handler = new EditDomainHandler(server); | 672 ExtensionManager manager = new ExtensionManager(); |
| 673 ServerPlugin plugin = new ServerPlugin(); |
| 674 manager.processPlugins([plugin]); |
| 675 handler = new EditDomainHandler(server, plugin); |
| 671 server.handlers = [handler]; | 676 server.handlers = [handler]; |
| 672 } | 677 } |
| 673 | 678 |
| 679 Future test_convertMethodToGetter_hasElement() { |
| 680 return assertHasKind(''' |
| 681 int getValue() => 42; |
| 682 ''', 'getValue', RefactoringKind.CONVERT_METHOD_TO_GETTER, true); |
| 683 } |
| 684 |
| 674 Future test_extractLocal() async { | 685 Future test_extractLocal() async { |
| 675 addTestFile(''' | 686 addTestFile(''' |
| 676 main() { | 687 main() { |
| 677 var a = 1 + 2; | 688 var a = 1 + 2; |
| 678 } | 689 } |
| 679 '''); | 690 '''); |
| 680 await waitForTasksFinished(); | 691 await waitForTasksFinished(); |
| 681 await getRefactoringsForString('1 + 2'); | 692 await getRefactoringsForString('1 + 2'); |
| 682 expect(kinds, contains(RefactoringKind.EXTRACT_LOCAL_VARIABLE)); | 693 expect(kinds, contains(RefactoringKind.EXTRACT_LOCAL_VARIABLE)); |
| 683 expect(kinds, contains(RefactoringKind.EXTRACT_METHOD)); | 694 expect(kinds, contains(RefactoringKind.EXTRACT_METHOD)); |
| 684 } | 695 } |
| 685 | 696 |
| 686 Future test_convertMethodToGetter_hasElement() { | |
| 687 return assertHasKind(''' | |
| 688 int getValue() => 42; | |
| 689 ''', 'getValue', RefactoringKind.CONVERT_METHOD_TO_GETTER, true); | |
| 690 } | |
| 691 | |
| 692 Future test_rename_hasElement_class() { | 697 Future test_rename_hasElement_class() { |
| 693 return assertHasRenameRefactoring(''' | 698 return assertHasRenameRefactoring(''' |
| 694 class Test {} | 699 class Test {} |
| 695 main() { | 700 main() { |
| 696 Test v; | 701 Test v; |
| 697 } | 702 } |
| 698 ''', 'Test v'); | 703 ''', 'Test v'); |
| 699 } | 704 } |
| 700 | 705 |
| 701 Future test_rename_hasElement_constructor() { | 706 Future test_rename_hasElement_constructor() { |
| (...skipping 993 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1695 [bool validateOnly = false]) { | 1700 [bool validateOnly = false]) { |
| 1696 Request request = new EditGetRefactoringParams( | 1701 Request request = new EditGetRefactoringParams( |
| 1697 kind, testFile, offset, length, validateOnly, options: options) | 1702 kind, testFile, offset, length, validateOnly, options: options) |
| 1698 .toRequest('0'); | 1703 .toRequest('0'); |
| 1699 return serverChannel.sendRequest(request); | 1704 return serverChannel.sendRequest(request); |
| 1700 } | 1705 } |
| 1701 | 1706 |
| 1702 @override | 1707 @override |
| 1703 void setUp() { | 1708 void setUp() { |
| 1704 super.setUp(); | 1709 super.setUp(); |
| 1705 server.handlers = [new EditDomainHandler(server),]; | |
| 1706 createProject(); | 1710 createProject(); |
| 1707 handler = new EditDomainHandler(server); | 1711 ExtensionManager manager = new ExtensionManager(); |
| 1712 ServerPlugin plugin = new ServerPlugin(); |
| 1713 manager.processPlugins([plugin]); |
| 1714 handler = new EditDomainHandler(server, plugin); |
| 1715 server.handlers = [handler]; |
| 1708 } | 1716 } |
| 1709 } | 1717 } |
| 1710 | 1718 |
| 1711 @reflectiveTest | 1719 @reflectiveTest |
| 1712 class _NoSearchEngine extends _AbstractGetRefactoring_Test { | 1720 class _NoSearchEngine extends _AbstractGetRefactoring_Test { |
| 1713 @override | 1721 @override |
| 1714 Index createIndex() { | 1722 Index createIndex() { |
| 1715 return null; | 1723 return null; |
| 1716 } | 1724 } |
| 1717 | 1725 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1739 .toRequest('0'); | 1747 .toRequest('0'); |
| 1740 return _assertErrorResposeNoIndex(request); | 1748 return _assertErrorResposeNoIndex(request); |
| 1741 } | 1749 } |
| 1742 | 1750 |
| 1743 _assertErrorResposeNoIndex(Request request) async { | 1751 _assertErrorResposeNoIndex(Request request) async { |
| 1744 Response response = await serverChannel.sendRequest(request); | 1752 Response response = await serverChannel.sendRequest(request); |
| 1745 expect(response.error, isNotNull); | 1753 expect(response.error, isNotNull); |
| 1746 expect(response.error.code, RequestErrorCode.NO_INDEX_GENERATED); | 1754 expect(response.error.code, RequestErrorCode.NO_INDEX_GENERATED); |
| 1747 } | 1755 } |
| 1748 } | 1756 } |
| OLD | NEW |