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

Side by Side Diff: pkg/analysis_server/test/domain_completion_test.dart

Issue 1449333002: process sorter analysis request(s) (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 1 month 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
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.domain.completion; 5 library test.domain.completion;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analysis_server/plugin/protocol/protocol.dart'; 9 import 'package:analysis_server/plugin/protocol/protocol.dart';
10 import 'package:analysis_server/src/analysis_server.dart'; 10 import 'package:analysis_server/src/analysis_server.dart';
(...skipping 12 matching lines...) Expand all
23 import 'package:analysis_server/src/services/completion/dart_completion_manager. dart'; 23 import 'package:analysis_server/src/services/completion/dart_completion_manager. dart';
24 import 'package:analysis_server/src/services/index/index.dart' show Index; 24 import 'package:analysis_server/src/services/index/index.dart' show Index;
25 import 'package:analysis_server/src/services/index/local_memory_index.dart'; 25 import 'package:analysis_server/src/services/index/local_memory_index.dart';
26 import 'package:analysis_server/src/services/search/search_engine.dart'; 26 import 'package:analysis_server/src/services/search/search_engine.dart';
27 import 'package:analyzer/file_system/file_system.dart'; 27 import 'package:analyzer/file_system/file_system.dart';
28 import 'package:analyzer/instrumentation/instrumentation.dart'; 28 import 'package:analyzer/instrumentation/instrumentation.dart';
29 import 'package:analyzer/source/pub_package_map_provider.dart'; 29 import 'package:analyzer/source/pub_package_map_provider.dart';
30 import 'package:analyzer/src/generated/engine.dart'; 30 import 'package:analyzer/src/generated/engine.dart';
31 import 'package:analyzer/src/generated/sdk.dart'; 31 import 'package:analyzer/src/generated/sdk.dart';
32 import 'package:analyzer/src/generated/source.dart'; 32 import 'package:analyzer/src/generated/source.dart';
33 import 'package:analyzer/src/task/dart.dart';
34 import 'package:analyzer/task/dart.dart';
35 import 'package:analyzer/task/model.dart';
33 import 'package:plugin/manager.dart'; 36 import 'package:plugin/manager.dart';
34 import 'package:test_reflective_loader/test_reflective_loader.dart'; 37 import 'package:test_reflective_loader/test_reflective_loader.dart';
35 import 'package:unittest/unittest.dart'; 38 import 'package:unittest/unittest.dart';
36 39
37 import 'analysis_abstract.dart'; 40 import 'analysis_abstract.dart';
38 import 'mock_sdk.dart'; 41 import 'mock_sdk.dart';
39 import 'mocks.dart'; 42 import 'mocks.dart';
40 import 'utils.dart'; 43 import 'utils.dart';
41 44
42 main() { 45 main() {
(...skipping 567 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 return getSuggestions().then((_) { 613 return getSuggestions().then((_) {
611 expect(replacementOffset, equals(completionOffset)); 614 expect(replacementOffset, equals(completionOffset));
612 expect(replacementLength, equals(0)); 615 expect(replacementLength, equals(0));
613 assertHasResult(CompletionSuggestionKind.INVOCATION, 'Object'); 616 assertHasResult(CompletionSuggestionKind.INVOCATION, 'Object');
614 assertHasResult(CompletionSuggestionKind.INVOCATION, 'HtmlElement'); 617 assertHasResult(CompletionSuggestionKind.INVOCATION, 'HtmlElement');
615 assertHasResult(CompletionSuggestionKind.INVOCATION, 'A'); 618 assertHasResult(CompletionSuggestionKind.INVOCATION, 'A');
616 assertNoResult('test'); 619 assertNoResult('test');
617 }); 620 });
618 } 621 }
619 622
623 test_relevancy_sorter_analysis() {
624 var originalSorter = DartCompletionManager.defaultContributionSorter;
625
626 // Setup the mock sorter to request additional analysis
627 var mockSorter = new MockRelevancySorter();
628 mockSorter.addTask(PARSED_UNIT);
629 mockSorter.addTask(LIBRARY_ELEMENT1);
630 mockSorter.addTask(RESOLVED_UNIT3);
631 mockSorter.addTask(RESOLVED_UNIT3);
632
633 DartCompletionManager.defaultContributionSorter = mockSorter;
634 addTestFile('main() {Map m; m.^}');
635
636 return getSuggestions().then((_) {
637 DartCompletionManager.defaultContributionSorter = originalSorter;
638 mockSorter.enabled = false;
639
640 // Assert that the analysis requests were processed
641 mockSorter.assertAnalysisRequestsProcessed();
642 });
643 }
644
620 test_simple() { 645 test_simple() {
621 addTestFile(''' 646 addTestFile('''
622 void main() { 647 void main() {
623 ^ 648 ^
624 } 649 }
625 '''); 650 ''');
626 return getSuggestions().then((_) { 651 return getSuggestions().then((_) {
627 expect(replacementOffset, equals(completionOffset)); 652 expect(replacementOffset, equals(completionOffset));
628 expect(replacementLength, equals(0)); 653 expect(replacementLength, equals(0));
629 assertHasResult(CompletionSuggestionKind.INVOCATION, 'Object'); 654 assertHasResult(CompletionSuggestionKind.INVOCATION, 'Object');
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
717 @override 742 @override
718 TimestampedData<String> getContents(Source source) { 743 TimestampedData<String> getContents(Source source) {
719 return source.contents; 744 return source.contents;
720 } 745 }
721 746
722 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); 747 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
723 } 748 }
724 749
725 class MockRelevancySorter implements ContributionSorter { 750 class MockRelevancySorter implements ContributionSorter {
726 bool enabled = true; 751 bool enabled = true;
752 List<ResultDescriptor> descriptors = <ResultDescriptor>[];
753
754 void addTask(ResultDescriptor descriptor) {
755 descriptors.add(descriptor);
756 }
757
758 void assertAnalysisRequestsProcessed() {
759 expect(descriptors, hasLength(0));
760 }
727 761
728 @override 762 @override
729 AnalysisRequest sort(CompletionRequest request, 763 AnalysisRequest sort(
730 Iterable<CompletionSuggestion> suggestions) { 764 CompletionRequest request, Iterable<CompletionSuggestion> suggestions) {
731 if (!enabled) { 765 if (!enabled) {
732 throw 'unexpected sort'; 766 throw 'unexpected sort';
733 } 767 }
734 return null; 768 return _nextAnalysisRequest(request);
769 }
770
771 AnalysisRequest _callback(CompletionRequest request, var value) {
772 expect(value, isNotNull);
773 return _nextAnalysisRequest(request);
774 }
775
776 AnalysisRequest _nextAnalysisRequest(CompletionRequest request) {
777 if (descriptors.length == 0) {
778 return null;
779 }
780 return new AnalysisRequest(
781 request.source, descriptors.removeAt(0), _callback);
735 } 782 }
736 } 783 }
737 784
738 /** 785 /**
739 * Mock stream for tracking calls to listen and subscription.cancel. 786 * Mock stream for tracking calls to listen and subscription.cancel.
740 */ 787 */
741 class MockStream<E> implements Stream<E> { 788 class MockStream<E> implements Stream<E> {
742 MockSubscription<E> mockSubscription = new MockSubscription<E>(); 789 MockSubscription<E> mockSubscription = new MockSubscription<E>();
743 int listenCount = 0; 790 int listenCount = 0;
744 791
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 } 893 }
847 '''); 894 ''');
848 await waitForTasksFinished(); 895 await waitForTasksFinished();
849 Request request = 896 Request request =
850 new CompletionGetSuggestionsParams(testFile, 0).toRequest('0'); 897 new CompletionGetSuggestionsParams(testFile, 0).toRequest('0');
851 Response response = handler.handleRequest(request); 898 Response response = handler.handleRequest(request);
852 expect(response.error, isNotNull); 899 expect(response.error, isNotNull);
853 expect(response.error.code, RequestErrorCode.NO_INDEX_GENERATED); 900 expect(response.error.code, RequestErrorCode.NO_INDEX_GENERATED);
854 } 901 }
855 } 902 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698