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

Side by Side Diff: pkg/analysis_server/test/edit/refactoring_test.dart

Issue 945113002: Add 'Convert Method to Getter' proposal only if it is an available refactoring. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 10 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
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/protocol.dart'; 10 import 'package:analysis_server/src/protocol.dart';
(...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 621
622 void _setOffsetLengthForString(String search) { 622 void _setOffsetLengthForString(String search) {
623 offset = findOffset(search); 623 offset = findOffset(search);
624 length = search.length; 624 length = search.length;
625 } 625 }
626 } 626 }
627 627
628 628
629 @reflectiveTest 629 @reflectiveTest
630 class GetAvailableRefactoringsTest extends AbstractAnalysisTest { 630 class GetAvailableRefactoringsTest extends AbstractAnalysisTest {
631 List<RefactoringKind> kinds;
632
631 /** 633 /**
632 * Tests that there is a RENAME refactoring available at the [search] offset. 634 * Tests that there is a RENAME refactoring available at the [search] offset.
633 */ 635 */
634 Future assertHasRenameRefactoring(String code, String search) { 636 Future assertHasRenameRefactoring(String code, String search) async {
637 return assertHasKind(code, search, RefactoringKind.RENAME, true);
638 }
639
640 /**
641 * Tests that there is refactoring of the given [kind] is available at the
642 * [search] offset.
643 */
644 Future assertHasKind(String code, String search, RefactoringKind kind,
645 bool expected) async {
635 addTestFile(code); 646 addTestFile(code);
636 return waitForTasksFinished().then((_) { 647 await waitForTasksFinished();
637 List<RefactoringKind> kinds = getRefactoringsAtString(search); 648 await getRefactoringsAtString(search);
638 expect(kinds, contains(RefactoringKind.RENAME)); 649 // verify
639 }); 650 Matcher matcher = contains(kind);
651 if (!expected) {
652 matcher = isNot(matcher);
653 }
654 expect(kinds, matcher);
640 } 655 }
641 656
642 @override 657 @override
643 Index createIndex() { 658 Index createIndex() {
644 return createLocalMemoryIndex(); 659 return createLocalMemoryIndex();
645 } 660 }
646 661
647 /** 662 /**
648 * Returns the list of available refactorings for the given [offset] and 663 * Returns the list of available refactorings for the given [offset] and
649 * [length]. 664 * [length].
650 */ 665 */
651 List<RefactoringKind> getRefactorings(int offset, int length) { 666 Future getRefactorings(int offset, int length) async {
652 Request request = new EditGetAvailableRefactoringsParams( 667 Request request = new EditGetAvailableRefactoringsParams(
653 testFile, 668 testFile,
654 offset, 669 offset,
655 length).toRequest('0'); 670 length).toRequest('0');
656 Response response = handleSuccessfulRequest(request); 671 serverChannel.sendRequest(request);
672 var response = await serverChannel.waitForResponse(request);
657 var result = new EditGetAvailableRefactoringsResult.fromResponse(response); 673 var result = new EditGetAvailableRefactoringsResult.fromResponse(response);
658 return result.kinds; 674 kinds = result.kinds;
659 } 675 }
660 676
661 /** 677 /**
662 * Returns the list of available refactorings at the offset of [search]. 678 * Returns the list of available refactorings at the offset of [search].
663 */ 679 */
664 List<RefactoringKind> getRefactoringsAtString(String search) { 680 Future getRefactoringsAtString(String search) {
665 int offset = findOffset(search); 681 int offset = findOffset(search);
666 return getRefactorings(offset, 0); 682 return getRefactorings(offset, 0);
667 } 683 }
668 684
669 List<RefactoringKind> getRefactoringsForString(String search) { 685 Future getRefactoringsForString(String search) {
670 int offset = findOffset(search); 686 int offset = findOffset(search);
671 return getRefactorings(offset, search.length); 687 return getRefactorings(offset, search.length);
672 } 688 }
673 689
674 @override 690 @override
675 void setUp() { 691 void setUp() {
676 super.setUp(); 692 super.setUp();
677 createProject(); 693 createProject();
678 handler = new EditDomainHandler(server); 694 handler = new EditDomainHandler(server);
695 server.handlers = [handler];
679 } 696 }
680 697
681 Future test_extractLocal() { 698 Future test_extractLocal() async {
682 addTestFile(''' 699 addTestFile('''
683 main() { 700 main() {
684 var a = 1 + 2; 701 var a = 1 + 2;
685 } 702 }
686 '''); 703 ''');
687 return waitForTasksFinished().then((_) { 704 await waitForTasksFinished();
688 var search = '1 + 2'; 705 await getRefactoringsForString('1 + 2');
689 List<RefactoringKind> kinds = getRefactoringsForString(search); 706 expect(kinds, contains(RefactoringKind.EXTRACT_LOCAL_VARIABLE));
690 expect(kinds, contains(RefactoringKind.EXTRACT_LOCAL_VARIABLE)); 707 expect(kinds, contains(RefactoringKind.EXTRACT_METHOD));
691 expect(kinds, contains(RefactoringKind.EXTRACT_METHOD)); 708 }
692 }); 709
710 Future test_convertMethodToGetter_hasElement() {
711 return assertHasKind('''
712 int getValue() => 42;
713 ''', 'getValue', RefactoringKind.CONVERT_METHOD_TO_GETTER, true);
693 } 714 }
694 715
695 Future test_rename_hasElement_class() { 716 Future test_rename_hasElement_class() {
696 return assertHasRenameRefactoring(''' 717 return assertHasRenameRefactoring('''
697 class Test {} 718 class Test {}
698 main() { 719 main() {
699 Test v; 720 Test v;
700 } 721 }
701 ''', 'Test v'); 722 ''', 'Test v');
702 } 723 }
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
790 return assertHasRenameRefactoring(''' 811 return assertHasRenameRefactoring('''
791 class A { 812 class A {
792 test() {} 813 test() {}
793 } 814 }
794 main(A a) { 815 main(A a) {
795 a.test(); 816 a.test();
796 } 817 }
797 ''', 'test();'); 818 ''', 'test();');
798 } 819 }
799 820
800 Future test_rename_noElement() { 821 Future test_rename_noElement() async {
801 addTestFile(''' 822 addTestFile('''
802 main() { 823 main() {
803 // not an element 824 // not an element
804 } 825 }
805 '''); 826 ''');
806 return waitForTasksFinished().then((_) { 827 await waitForTasksFinished();
807 List<RefactoringKind> kinds = 828 await getRefactoringsAtString('// not an element');
808 getRefactoringsAtString('// not an element'); 829 expect(kinds, isNot(contains(RefactoringKind.RENAME)));
809 expect(kinds, isNot(contains(RefactoringKind.RENAME)));
810 });
811 } 830 }
812 } 831 }
813 832
814 833
815 @reflectiveTest 834 @reflectiveTest
816 class InlineLocalTest extends _AbstractGetRefactoring_Test { 835 class InlineLocalTest extends _AbstractGetRefactoring_Test {
817 test_feedback() { 836 test_feedback() {
818 addTestFile(''' 837 addTestFile('''
819 main() { 838 main() {
820 int test = 42; 839 int test = 42;
(...skipping 965 matching lines...) Expand 10 before | Expand all | Expand 10 after
1786 true).toRequest('0'); 1805 true).toRequest('0');
1787 return _assertErrorResposeNoIndex(request); 1806 return _assertErrorResposeNoIndex(request);
1788 } 1807 }
1789 1808
1790 _assertErrorResposeNoIndex(Request request) async { 1809 _assertErrorResposeNoIndex(Request request) async {
1791 Response response = await serverChannel.sendRequest(request); 1810 Response response = await serverChannel.sendRequest(request);
1792 expect(response.error, isNotNull); 1811 expect(response.error, isNotNull);
1793 expect(response.error.code, RequestErrorCode.NO_INDEX_GENERATED); 1812 expect(response.error.code, RequestErrorCode.NO_INDEX_GENERATED);
1794 } 1813 }
1795 } 1814 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698