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/completion/completion_core.dart' | 9 import 'package:analysis_server/completion/completion_core.dart' |
10 show CompletionRequest, CompletionResult; | 10 show CompletionRequest, CompletionResult; |
(...skipping 16 matching lines...) Expand all Loading... |
27 import 'package:analyzer/src/generated/engine.dart'; | 27 import 'package:analyzer/src/generated/engine.dart'; |
28 import 'package:analyzer/src/generated/sdk.dart'; | 28 import 'package:analyzer/src/generated/sdk.dart'; |
29 import 'package:analyzer/src/generated/source.dart'; | 29 import 'package:analyzer/src/generated/source.dart'; |
30 import 'package:plugin/manager.dart'; | 30 import 'package:plugin/manager.dart'; |
31 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 31 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
32 import 'package:unittest/unittest.dart'; | 32 import 'package:unittest/unittest.dart'; |
33 | 33 |
34 import 'analysis_abstract.dart'; | 34 import 'analysis_abstract.dart'; |
35 import 'mock_sdk.dart'; | 35 import 'mock_sdk.dart'; |
36 import 'mocks.dart'; | 36 import 'mocks.dart'; |
| 37 import 'utils.dart'; |
37 | 38 |
38 main() { | 39 main() { |
39 groupSep = ' | '; | 40 initializeTestEnvironment(); |
40 defineReflectiveTests(CompletionManagerTest); | 41 defineReflectiveTests(CompletionManagerTest); |
41 defineReflectiveTests(CompletionTest); | 42 defineReflectiveTests(CompletionTest); |
42 defineReflectiveTests(_NoSearchEngine); | 43 defineReflectiveTests(_NoSearchEngine); |
43 } | 44 } |
44 | 45 |
45 @reflectiveTest | 46 @reflectiveTest |
46 class CompletionManagerTest extends AbstractAnalysisTest { | 47 class CompletionManagerTest extends AbstractAnalysisTest { |
47 AnalysisDomainHandler analysisDomain; | 48 AnalysisDomainHandler analysisDomain; |
48 Test_CompletionDomainHandler completionDomain; | 49 Test_CompletionDomainHandler completionDomain; |
49 Request request; | 50 Request request; |
50 int requestCount = 0; | 51 int requestCount = 0; |
51 String testFile2 = '/project/bin/test2.dart'; | 52 String testFile2 = '/project/bin/test2.dart'; |
52 | 53 |
53 AnalysisServer createAnalysisServer(Index index) { | 54 AnalysisServer createAnalysisServer(Index index) { |
54 ExtensionManager manager = new ExtensionManager(); | 55 ExtensionManager manager = new ExtensionManager(); |
55 ServerPlugin serverPlugin = new ServerPlugin(); | 56 ServerPlugin serverPlugin = new ServerPlugin(); |
56 manager.processPlugins([serverPlugin]); | 57 manager.processPlugins([serverPlugin]); |
57 return new Test_AnalysisServer(super.serverChannel, super.resourceProvider, | 58 return new Test_AnalysisServer( |
58 super.packageMapProvider, index, serverPlugin, | 59 super.serverChannel, |
59 new AnalysisServerOptions(), new MockSdk(), | 60 super.resourceProvider, |
| 61 super.packageMapProvider, |
| 62 index, |
| 63 serverPlugin, |
| 64 new AnalysisServerOptions(), |
| 65 new MockSdk(), |
60 InstrumentationService.NULL_SERVICE); | 66 InstrumentationService.NULL_SERVICE); |
61 } | 67 } |
62 | 68 |
63 @override | 69 @override |
64 Index createIndex() { | 70 Index createIndex() { |
65 return createLocalMemoryIndex(); | 71 return createLocalMemoryIndex(); |
66 } | 72 } |
67 | 73 |
68 void sendRequest(String path) { | 74 void sendRequest(String path) { |
69 String id = (++requestCount).toString(); | 75 String id = (++requestCount).toString(); |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 return super.addTestFile(content); | 276 return super.addTestFile(content); |
271 } | 277 } |
272 expect(completionOffset, isNot(equals(-1)), reason: 'missing ^'); | 278 expect(completionOffset, isNot(equals(-1)), reason: 'missing ^'); |
273 int nextOffset = content.indexOf('^', completionOffset + 1); | 279 int nextOffset = content.indexOf('^', completionOffset + 1); |
274 expect(nextOffset, equals(-1), reason: 'too many ^'); | 280 expect(nextOffset, equals(-1), reason: 'too many ^'); |
275 return super.addTestFile(content.substring(0, completionOffset) + | 281 return super.addTestFile(content.substring(0, completionOffset) + |
276 content.substring(completionOffset + 1)); | 282 content.substring(completionOffset + 1)); |
277 } | 283 } |
278 | 284 |
279 void assertHasResult(CompletionSuggestionKind kind, String completion, | 285 void assertHasResult(CompletionSuggestionKind kind, String completion, |
280 [int relevance = DART_RELEVANCE_DEFAULT, bool isDeprecated = false, | 286 [int relevance = DART_RELEVANCE_DEFAULT, |
| 287 bool isDeprecated = false, |
281 bool isPotential = false]) { | 288 bool isPotential = false]) { |
282 var cs; | 289 var cs; |
283 suggestions.forEach((s) { | 290 suggestions.forEach((s) { |
284 if (s.completion == completion) { | 291 if (s.completion == completion) { |
285 if (cs == null) { | 292 if (cs == null) { |
286 cs = s; | 293 cs = s; |
287 } else { | 294 } else { |
288 fail('expected exactly one $completion but found > 1'); | 295 fail('expected exactly one $completion but found > 1'); |
289 } | 296 } |
290 } | 297 } |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
468 '''); | 475 '''); |
469 return getSuggestions().then((_) { | 476 return getSuggestions().then((_) { |
470 expect(replacementOffset, equals(completionOffset)); | 477 expect(replacementOffset, equals(completionOffset)); |
471 expect(replacementLength, equals(0)); | 478 expect(replacementLength, equals(0)); |
472 assertHasResult(CompletionSuggestionKind.INVOCATION, 'm', | 479 assertHasResult(CompletionSuggestionKind.INVOCATION, 'm', |
473 DART_RELEVANCE_LOCAL_METHOD); | 480 DART_RELEVANCE_LOCAL_METHOD); |
474 }); | 481 }); |
475 } | 482 } |
476 | 483 |
477 test_partFile() { | 484 test_partFile() { |
478 addFile('/project/bin/testA.dart', ''' | 485 addFile( |
| 486 '/project/bin/testA.dart', |
| 487 ''' |
479 library libA; | 488 library libA; |
480 part "$testFile"; | 489 part "$testFile"; |
481 import 'dart:html'; | 490 import 'dart:html'; |
482 class A { } | 491 class A { } |
483 '''); | 492 '''); |
484 addTestFile(''' | 493 addTestFile(''' |
485 part of libA; | 494 part of libA; |
486 main() {^}'''); | 495 main() {^}'''); |
487 return getSuggestions().then((_) { | 496 return getSuggestions().then((_) { |
488 expect(replacementOffset, equals(completionOffset)); | 497 expect(replacementOffset, equals(completionOffset)); |
489 expect(replacementLength, equals(0)); | 498 expect(replacementLength, equals(0)); |
490 assertHasResult(CompletionSuggestionKind.INVOCATION, 'Object'); | 499 assertHasResult(CompletionSuggestionKind.INVOCATION, 'Object'); |
491 assertHasResult(CompletionSuggestionKind.INVOCATION, 'HtmlElement'); | 500 assertHasResult(CompletionSuggestionKind.INVOCATION, 'HtmlElement'); |
492 assertHasResult(CompletionSuggestionKind.INVOCATION, 'A'); | 501 assertHasResult(CompletionSuggestionKind.INVOCATION, 'A'); |
493 assertNoResult('test'); | 502 assertNoResult('test'); |
494 }); | 503 }); |
495 } | 504 } |
496 | 505 |
497 test_partFile2() { | 506 test_partFile2() { |
498 addFile('/testA.dart', ''' | 507 addFile( |
| 508 '/testA.dart', |
| 509 ''' |
499 part of libA; | 510 part of libA; |
500 class A { }'''); | 511 class A { }'''); |
501 addTestFile(''' | 512 addTestFile(''' |
502 library libA; | 513 library libA; |
503 part "/testA.dart"; | 514 part "/testA.dart"; |
504 import 'dart:html'; | 515 import 'dart:html'; |
505 main() {^} | 516 main() {^} |
506 '''); | 517 '''); |
507 return getSuggestions().then((_) { | 518 return getSuggestions().then((_) { |
508 expect(replacementOffset, equals(completionOffset)); | 519 expect(replacementOffset, equals(completionOffset)); |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
648 ++cancelCount; | 659 ++cancelCount; |
649 return new Future.value(true); | 660 return new Future.value(true); |
650 } | 661 } |
651 | 662 |
652 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | 663 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
653 } | 664 } |
654 | 665 |
655 class Test_AnalysisServer extends AnalysisServer { | 666 class Test_AnalysisServer extends AnalysisServer { |
656 final MockContext mockContext = new MockContext(); | 667 final MockContext mockContext = new MockContext(); |
657 | 668 |
658 Test_AnalysisServer(ServerCommunicationChannel channel, | 669 Test_AnalysisServer( |
| 670 ServerCommunicationChannel channel, |
659 ResourceProvider resourceProvider, | 671 ResourceProvider resourceProvider, |
660 PubPackageMapProvider packageMapProvider, Index index, | 672 PubPackageMapProvider packageMapProvider, |
661 ServerPlugin serverPlugin, AnalysisServerOptions analysisServerOptions, | 673 Index index, |
662 DartSdk defaultSdk, InstrumentationService instrumentationService) | 674 ServerPlugin serverPlugin, |
663 : super(channel, resourceProvider, packageMapProvider, index, | 675 AnalysisServerOptions analysisServerOptions, |
664 serverPlugin, analysisServerOptions, defaultSdk, | 676 DartSdk defaultSdk, |
665 instrumentationService); | 677 InstrumentationService instrumentationService) |
| 678 : super( |
| 679 channel, |
| 680 resourceProvider, |
| 681 packageMapProvider, |
| 682 index, |
| 683 serverPlugin, |
| 684 analysisServerOptions, |
| 685 defaultSdk, |
| 686 instrumentationService); |
666 | 687 |
667 @override | 688 @override |
668 AnalysisContext getAnalysisContext(String path) { | 689 AnalysisContext getAnalysisContext(String path) { |
669 return mockContext; | 690 return mockContext; |
670 } | 691 } |
671 | 692 |
672 @override | 693 @override |
673 ContextSourcePair getContextSourcePair(String path) { | 694 ContextSourcePair getContextSourcePair(String path) { |
674 ContextSourcePair pair = super.getContextSourcePair(path); | 695 ContextSourcePair pair = super.getContextSourcePair(path); |
675 return new ContextSourcePair(mockContext, pair.source); | 696 return new ContextSourcePair(mockContext, pair.source); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
720 } | 741 } |
721 '''); | 742 '''); |
722 await waitForTasksFinished(); | 743 await waitForTasksFinished(); |
723 Request request = | 744 Request request = |
724 new CompletionGetSuggestionsParams(testFile, 0).toRequest('0'); | 745 new CompletionGetSuggestionsParams(testFile, 0).toRequest('0'); |
725 Response response = handler.handleRequest(request); | 746 Response response = handler.handleRequest(request); |
726 expect(response.error, isNotNull); | 747 expect(response.error, isNotNull); |
727 expect(response.error.code, RequestErrorCode.NO_INDEX_GENERATED); | 748 expect(response.error.code, RequestErrorCode.NO_INDEX_GENERATED); |
728 } | 749 } |
729 } | 750 } |
OLD | NEW |