| 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/plugin/protocol/protocol.dart'; | 9 import 'package:analysis_server/plugin/protocol/protocol.dart'; | 
| 10 import 'package:analysis_server/src/domain_completion.dart'; | 10 import 'package:analysis_server/src/domain_completion.dart'; | 
| 11 import 'package:analysis_server/src/provisional/completion/completion_core.dart'
     ; | 11 import 'package:analysis_server/src/provisional/completion/completion_core.dart'
     ; | 
| 12 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.
     dart'; | 12 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.
     dart'; | 
| 13 import 'package:analysis_server/src/services/completion/dart/completion_manager.
     dart'; | 13 import 'package:analysis_server/src/services/completion/dart/completion_manager.
     dart'; | 
| 14 import 'package:analysis_server/src/services/completion/dart/contribution_sorter
     .dart'; | 14 import 'package:analysis_server/src/services/completion/dart/contribution_sorter
     .dart'; | 
| 15 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 15 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 
| 16 import 'package:unittest/unittest.dart'; | 16 import 'package:unittest/unittest.dart'; | 
| 17 | 17 | 
| 18 import 'analysis_abstract.dart'; | 18 import 'analysis_abstract.dart'; | 
| 19 import 'domain_completion_util.dart'; | 19 import 'domain_completion_util.dart'; | 
|  | 20 import 'mocks.dart' show pumpEventQueue; | 
| 20 import 'utils.dart'; | 21 import 'utils.dart'; | 
| 21 | 22 | 
| 22 main() { | 23 main() { | 
| 23   initializeTestEnvironment(); | 24   initializeTestEnvironment(); | 
| 24   defineReflectiveTests(CompletionDomainHandlerTest); | 25   defineReflectiveTests(CompletionDomainHandlerTest); | 
| 25   defineReflectiveTests(_NoSearchEngine); | 26   defineReflectiveTests(_NoSearchEngine); | 
| 26 } | 27 } | 
| 27 | 28 | 
| 28 @reflectiveTest | 29 @reflectiveTest | 
| 29 class CompletionDomainHandlerTest extends AbstractCompletionDomainTest { | 30 class CompletionDomainHandlerTest extends AbstractCompletionDomainTest { | 
| (...skipping 16 matching lines...) Expand all  Loading... | 
| 46     '''); | 47     '''); | 
| 47     return getSuggestions().then((_) { | 48     return getSuggestions().then((_) { | 
| 48       expect(replacementOffset, equals(completionOffset)); | 49       expect(replacementOffset, equals(completionOffset)); | 
| 49       expect(replacementLength, equals(0)); | 50       expect(replacementLength, equals(0)); | 
| 50       assertHasResult(CompletionSuggestionKind.INVOCATION, 'Object'); | 51       assertHasResult(CompletionSuggestionKind.INVOCATION, 'Object'); | 
| 51       assertHasResult(CompletionSuggestionKind.INVOCATION, 'HtmlElement'); | 52       assertHasResult(CompletionSuggestionKind.INVOCATION, 'HtmlElement'); | 
| 52       assertNoResult('test'); | 53       assertNoResult('test'); | 
| 53     }); | 54     }); | 
| 54   } | 55   } | 
| 55 | 56 | 
|  | 57   test_imports_aborted_new_request() async { | 
|  | 58     addTestFile(''' | 
|  | 59         class foo { } | 
|  | 60         c^'''); | 
|  | 61 | 
|  | 62     // Make a request for suggestions | 
|  | 63     Request request = | 
|  | 64         new CompletionGetSuggestionsParams(testFile, completionOffset) | 
|  | 65             .toRequest('7'); | 
|  | 66     Response response = handleSuccessfulRequest(request); | 
|  | 67     var result1 = new CompletionGetSuggestionsResult.fromResponse(response); | 
|  | 68     var completionId1 = result1.id; | 
|  | 69     assertValidId(response.id); | 
|  | 70 | 
|  | 71     // Perform some analysis but assert that no suggestions have yet been made | 
|  | 72     completionId = completionId1; | 
|  | 73     await pumpEventQueue(25); | 
|  | 74     expect(suggestionsDone, isFalse); | 
|  | 75     expect(suggestions, hasLength(0)); | 
|  | 76 | 
|  | 77     // Make another request before the first request completes | 
|  | 78     Request request2 = | 
|  | 79         new CompletionGetSuggestionsParams(testFile, completionOffset) | 
|  | 80             .toRequest('8'); | 
|  | 81     Response response2 = handleSuccessfulRequest(request2); | 
|  | 82     var result2 = new CompletionGetSuggestionsResult.fromResponse(response2); | 
|  | 83     var completionId2 = result2.id; | 
|  | 84     assertValidId(completionId2); | 
|  | 85 | 
|  | 86     // Wait for both sets of suggestions | 
|  | 87     completionId = completionId2; | 
|  | 88     await pumpEventQueue(); | 
|  | 89     expect(allSuggestions[completionId1], hasLength(0)); | 
|  | 90     expect(allSuggestions[completionId2], same(suggestions)); | 
|  | 91     assertHasResult(CompletionSuggestionKind.KEYWORD, 'class', | 
|  | 92         relevance: DART_RELEVANCE_HIGH); | 
|  | 93   } | 
|  | 94 | 
|  | 95   test_imports_aborted_source_changed() async { | 
|  | 96     addTestFile(''' | 
|  | 97         class foo { } | 
|  | 98         c^'''); | 
|  | 99 | 
|  | 100     // Make a request for suggestions | 
|  | 101     Request request = | 
|  | 102         new CompletionGetSuggestionsParams(testFile, completionOffset) | 
|  | 103             .toRequest('0'); | 
|  | 104     Response response = handleSuccessfulRequest(request); | 
|  | 105     completionId = response.id; | 
|  | 106     assertValidId(completionId); | 
|  | 107 | 
|  | 108     // Perform some analysis but assert that no suggestions have yet been made | 
|  | 109     await pumpEventQueue(25); | 
|  | 110     expect(suggestionsDone, isFalse); | 
|  | 111     expect(suggestions, hasLength(0)); | 
|  | 112 | 
|  | 113     // Simulate user deleting text after request but before suggestions returned | 
|  | 114     server.updateContent('uc1', {testFile: new AddContentOverlay(testCode)}); | 
|  | 115     server.updateContent('uc2', { | 
|  | 116       testFile: new ChangeContentOverlay( | 
|  | 117           [new SourceEdit(completionOffset - 1, 1, '')]) | 
|  | 118     }); | 
|  | 119 | 
|  | 120     // Expect the completion domain to discard request because source changed | 
|  | 121     await pumpEventQueue().then((_) { | 
|  | 122       expect(suggestionsDone, isTrue); | 
|  | 123     }); | 
|  | 124     expect(suggestions, hasLength(0)); | 
|  | 125   } | 
|  | 126 | 
| 56   test_imports_incremental() async { | 127   test_imports_incremental() async { | 
| 57     addTestFile('''library foo; | 128     addTestFile('''library foo; | 
| 58       e^ | 129       e^ | 
| 59       import "dart:async"; | 130       import "dart:async"; | 
| 60       import "package:foo/foo.dart"; | 131       import "package:foo/foo.dart"; | 
| 61       class foo { }'''); | 132       class foo { }'''); | 
| 62     await waitForTasksFinished(); | 133     await waitForTasksFinished(); | 
| 63     server.updateContent('uc1', {testFile: new AddContentOverlay(testCode)}); | 134     server.updateContent('uc1', {testFile: new AddContentOverlay(testCode)}); | 
| 64     server.updateContent('uc2', { | 135     server.updateContent('uc2', { | 
| 65       testFile: | 136       testFile: | 
| (...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 472 } | 543 } | 
| 473     '''); | 544     '''); | 
| 474     await waitForTasksFinished(); | 545     await waitForTasksFinished(); | 
| 475     Request request = | 546     Request request = | 
| 476         new CompletionGetSuggestionsParams(testFile, 0).toRequest('0'); | 547         new CompletionGetSuggestionsParams(testFile, 0).toRequest('0'); | 
| 477     Response response = handler.handleRequest(request); | 548     Response response = handler.handleRequest(request); | 
| 478     expect(response.error, isNotNull); | 549     expect(response.error, isNotNull); | 
| 479     expect(response.error.code, RequestErrorCode.NO_INDEX_GENERATED); | 550     expect(response.error.code, RequestErrorCode.NO_INDEX_GENERATED); | 
| 480   } | 551   } | 
| 481 } | 552 } | 
| OLD | NEW | 
|---|