| Index: pkg/analysis_server/test/domain_completion_util.dart
|
| diff --git a/pkg/analysis_server/test/domain_completion_util.dart b/pkg/analysis_server/test/domain_completion_util.dart
|
| index bd55b7212803090a9ec52bc8632502bdb8c38835..e95b14fcb3a67f0826eaa1a418e11c7e332bfe90 100644
|
| --- a/pkg/analysis_server/test/domain_completion_util.dart
|
| +++ b/pkg/analysis_server/test/domain_completion_util.dart
|
| @@ -14,13 +14,13 @@ import 'package:analysis_server/src/services/index/index.dart';
|
| import 'package:test/test.dart';
|
|
|
| import 'analysis_abstract.dart';
|
| -import 'mocks.dart';
|
|
|
| class AbstractCompletionDomainTest extends AbstractAnalysisTest {
|
| String completionId;
|
| int completionOffset;
|
| int replacementOffset;
|
| int replacementLength;
|
| + Map<String, Completer<Null>> receivedSuggestionsCompleters = {};
|
| List<CompletionSuggestion> suggestions = [];
|
| bool suggestionsDone = false;
|
| Map<String, List<CompletionSuggestion>> allSuggestions = {};
|
| @@ -82,34 +82,33 @@ class AbstractCompletionDomainTest extends AbstractAnalysisTest {
|
| return createMemoryIndex();
|
| }
|
|
|
| - Future getSuggestions() {
|
| - return waitForTasksFinished().then((_) {
|
| - Request request =
|
| - new CompletionGetSuggestionsParams(testFile, completionOffset)
|
| - .toRequest('0');
|
| - Response response = handleSuccessfulRequest(request);
|
| - completionId = response.id;
|
| - assertValidId(completionId);
|
| - return pumpEventQueue().then((_) {
|
| - expect(suggestionsDone, isTrue);
|
| - });
|
| - });
|
| + Future getSuggestions() async {
|
| + await waitForTasksFinished();
|
| +
|
| + Request request =
|
| + new CompletionGetSuggestionsParams(testFile, completionOffset)
|
| + .toRequest('0');
|
| + Response response = await waitResponse(request);
|
| + var result = new CompletionGetSuggestionsResult.fromResponse(response);
|
| + completionId = result.id;
|
| + assertValidId(completionId);
|
| + await _getResultsCompleter(completionId).future;
|
| + expect(suggestionsDone, isTrue);
|
| }
|
|
|
| - void processNotification(Notification notification) {
|
| + processNotification(Notification notification) async {
|
| if (notification.event == COMPLETION_RESULTS) {
|
| var params = new CompletionResultsParams.fromNotification(notification);
|
| String id = params.id;
|
| assertValidId(id);
|
| - if (id == completionId) {
|
| - expect(suggestionsDone, isFalse);
|
| - replacementOffset = params.replacementOffset;
|
| - replacementLength = params.replacementLength;
|
| - suggestionsDone = params.isLast;
|
| - expect(suggestionsDone, isNotNull);
|
| - suggestions = params.results;
|
| - }
|
| + replacementOffset = params.replacementOffset;
|
| + replacementLength = params.replacementLength;
|
| + suggestionsDone = params.isLast;
|
| + expect(suggestionsDone, isNotNull);
|
| + suggestions = params.results;
|
| + expect(allSuggestions.containsKey(id), isFalse);
|
| allSuggestions[id] = params.results;
|
| + _getResultsCompleter(id).complete(null);
|
| } else if (notification.event == SERVER_ERROR) {
|
| fail('server error: ${notification.toJson()}');
|
| }
|
| @@ -121,4 +120,9 @@ class AbstractCompletionDomainTest extends AbstractAnalysisTest {
|
| createProject();
|
| handler = new CompletionDomainHandler(server);
|
| }
|
| +
|
| + Completer<Null> _getResultsCompleter(String id) {
|
| + return receivedSuggestionsCompleters.putIfAbsent(
|
| + id, () => new Completer<Null>());
|
| + }
|
| }
|
|
|