| 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.domain.completion; | 5 library test.domain.completion; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 | 8 |
| 9 import 'package:analysis_server/protocol/protocol.dart'; | 9 import 'package:analysis_server/protocol/protocol.dart'; |
| 10 import 'package:analysis_server/protocol/protocol_generated.dart'; | 10 import 'package:analysis_server/protocol/protocol_generated.dart'; |
| (...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 '''); | 268 '''); |
| 269 return getSuggestions().then((_) { | 269 return getSuggestions().then((_) { |
| 270 expect(replacementOffset, equals(completionOffset)); | 270 expect(replacementOffset, equals(completionOffset)); |
| 271 expect(replacementLength, equals(0)); | 271 expect(replacementLength, equals(0)); |
| 272 assertHasResult(CompletionSuggestionKind.INVOCATION, 'Object'); | 272 assertHasResult(CompletionSuggestionKind.INVOCATION, 'Object'); |
| 273 assertHasResult(CompletionSuggestionKind.INVOCATION, 'HtmlElement'); | 273 assertHasResult(CompletionSuggestionKind.INVOCATION, 'HtmlElement'); |
| 274 assertNoResult('test'); | 274 assertNoResult('test'); |
| 275 }); | 275 }); |
| 276 } | 276 } |
| 277 | 277 |
| 278 @failingTest | |
| 279 test_imports_aborted_new_request() async { | 278 test_imports_aborted_new_request() async { |
| 280 // TODO(brianwilkerson) Figure out whether this test makes sense when | |
| 281 // running the new driver. It waits for an initial empty notification then | |
| 282 // waits for a new notification. But I think that under the driver we only | |
| 283 // ever send one notification. | |
| 284 addTestFile(''' | 279 addTestFile(''' |
| 285 class foo { } | 280 class foo { } |
| 286 c^'''); | 281 c^'''); |
| 287 | 282 |
| 288 // Make a request for suggestions | 283 // Make a request for suggestions |
| 289 Request request1 = | 284 Request request1 = |
| 290 new CompletionGetSuggestionsParams(testFile, completionOffset) | 285 new CompletionGetSuggestionsParams(testFile, completionOffset) |
| 291 .toRequest('7'); | 286 .toRequest('7'); |
| 292 Response response1 = await waitResponse(request1); | 287 Response response1 = await waitResponse(request1); |
| 293 var result1 = new CompletionGetSuggestionsResult.fromResponse(response1); | 288 var result1 = new CompletionGetSuggestionsResult.fromResponse(response1); |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 394 server.handleRequest(new AnalysisUpdateContentParams( | 389 server.handleRequest(new AnalysisUpdateContentParams( |
| 395 {testFile: new AddContentOverlay(revisedContent)}).toRequest('add1')); | 390 {testFile: new AddContentOverlay(revisedContent)}).toRequest('add1')); |
| 396 | 391 |
| 397 // Request code completion immediately after edit | 392 // Request code completion immediately after edit |
| 398 Response response = await waitResponse( | 393 Response response = await waitResponse( |
| 399 new CompletionGetSuggestionsParams(testFile, completionOffset) | 394 new CompletionGetSuggestionsParams(testFile, completionOffset) |
| 400 .toRequest('0')); | 395 .toRequest('0')); |
| 401 completionId = response.id; | 396 completionId = response.id; |
| 402 assertValidId(completionId); | 397 assertValidId(completionId); |
| 403 await waitForTasksFinished(); | 398 await waitForTasksFinished(); |
| 399 // wait for response to arrive |
| 400 // because although the analysis is complete (waitForTasksFinished) |
| 401 // the response may not yet have been processed |
| 402 while (replacementOffset == null) { |
| 403 await new Future.delayed(new Duration(milliseconds: 5)); |
| 404 } |
| 404 expect(replacementOffset, completionOffset - 1); | 405 expect(replacementOffset, completionOffset - 1); |
| 405 expect(replacementLength, 1); | 406 expect(replacementLength, 1); |
| 406 assertHasResult(CompletionSuggestionKind.KEYWORD, 'library', | 407 assertHasResult(CompletionSuggestionKind.KEYWORD, 'library', |
| 407 relevance: DART_RELEVANCE_HIGH); | 408 relevance: DART_RELEVANCE_HIGH); |
| 408 assertHasResult(CompletionSuggestionKind.KEYWORD, 'import \'\';', | 409 assertHasResult(CompletionSuggestionKind.KEYWORD, 'import \'\';', |
| 409 selectionOffset: 8, relevance: DART_RELEVANCE_HIGH); | 410 selectionOffset: 8, relevance: DART_RELEVANCE_HIGH); |
| 410 assertHasResult(CompletionSuggestionKind.KEYWORD, 'export \'\';', | 411 assertHasResult(CompletionSuggestionKind.KEYWORD, 'export \'\';', |
| 411 selectionOffset: 8, relevance: DART_RELEVANCE_HIGH); | 412 selectionOffset: 8, relevance: DART_RELEVANCE_HIGH); |
| 412 assertHasResult(CompletionSuggestionKind.KEYWORD, 'part \'\';', | 413 assertHasResult(CompletionSuggestionKind.KEYWORD, 'part \'\';', |
| 413 selectionOffset: 6, relevance: DART_RELEVANCE_HIGH); | 414 selectionOffset: 6, relevance: DART_RELEVANCE_HIGH); |
| (...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 777 | 778 |
| 778 @override | 779 @override |
| 779 Future sort( | 780 Future sort( |
| 780 CompletionRequest request, Iterable<CompletionSuggestion> suggestions) { | 781 CompletionRequest request, Iterable<CompletionSuggestion> suggestions) { |
| 781 if (!enabled) { | 782 if (!enabled) { |
| 782 throw 'unexpected sort'; | 783 throw 'unexpected sort'; |
| 783 } | 784 } |
| 784 return new Future.value(); | 785 return new Future.value(); |
| 785 } | 786 } |
| 786 } | 787 } |
| OLD | NEW |