Index: pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart |
diff --git a/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8b2459f8344302b1360ff56a68c4b0b8cfafa8b8 |
--- /dev/null |
+++ b/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart |
@@ -0,0 +1,194 @@ |
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+library test.services.completion.contributor.dart.local_lib; |
+ |
+import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart'; |
+import 'package:analysis_server/src/services/completion/dart/local_library_contributor.dart'; |
+import 'package:test_reflective_loader/test_reflective_loader.dart'; |
+import 'package:unittest/unittest.dart'; |
+ |
+import '../../../utils.dart'; |
+import 'completion_contributor_util.dart'; |
+ |
+main() { |
+ initializeTestEnvironment(); |
+ defineReflectiveTests(LocalLibraryContributorTest); |
+} |
+ |
+@reflectiveTest |
+class LocalLibraryContributorTest extends DartCompletionContributorTest { |
+ @override |
+ DartCompletionContributor createContributor() { |
+ return new LocalLibraryContributor(); |
+ } |
+ |
+ test_partFile_Constructor() async { |
+ // SimpleIdentifier TypeName ConstructorName |
+ addSource( |
+ '/testB.dart', |
+ ''' |
+ lib B; |
+ int T1; |
+ F1() { } |
+ class X {X.c(); X._d(); z() {}}'''); |
+ addSource( |
+ '/testA.dart', |
+ ''' |
+ library libA; |
+ import "/testB.dart"; |
+ part "$testFile"; |
+ class A { } |
+ var m;'''); |
+ addTestSource(''' |
+ part of libA; |
+ class B { factory B.bar(int x) => null; } |
+ main() {new ^}'''); |
+ await computeLibrariesContaining(); |
+ await computeSuggestions(); |
+ expect(replacementOffset, completionOffset); |
+ expect(replacementLength, 0); |
+ assertSuggestConstructor('A'); |
+ // Suggested by LocalConstructorContributor |
+ assertNotSuggested('B.bar'); |
+ // Suggested by ImportedReferenceContributor |
+ assertNotSuggested('Object'); |
+ assertNotSuggested('X.c'); |
+ assertNotSuggested('X._d'); |
+ assertNotSuggested('F1'); |
+ assertNotSuggested('T1'); |
+ assertNotSuggested('_d'); |
+ assertNotSuggested('z'); |
+ assertNotSuggested('m'); |
+ } |
+ |
+ test_partFile_TypeName() async { |
+ addSource( |
+ '/testB.dart', |
+ ''' |
+ lib B; |
+ int T1; |
+ F1() { } |
+ class X {X.c(); X._d(); z() {}}'''); |
+ addSource( |
+ '/testA.dart', |
+ ''' |
+ library libA; |
+ import "/testB.dart"; |
+ part "$testFile"; |
+ class A { var a1; a2(){}} |
+ var m; |
+ int af() {return 0;}'''); |
+ addTestSource(''' |
+ part of libA; |
+ class B { factory B.bar(int x) => null; } |
+ main() {^}'''); |
+ await computeLibrariesContaining(); |
+ await computeSuggestions(); |
+ expect(replacementOffset, completionOffset); |
+ expect(replacementLength, 0); |
+ assertSuggestClass('A'); |
+ assertSuggestFunction('af', 'int', |
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION); |
+ assertSuggestTopLevelVar('m', null, |
+ relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE); |
+ assertNotSuggested('a1'); |
+ assertNotSuggested('a2'); |
+ // Suggested by LocalConstructorContributor |
+ assertNotSuggested('B.bar'); |
+ // Suggested by ImportedReferenceContributor |
+ assertNotSuggested('Object'); |
+ assertNotSuggested('X.c'); |
+ assertNotSuggested('X._d'); |
+ assertNotSuggested('F1'); |
+ assertNotSuggested('T1'); |
+ assertNotSuggested('_d'); |
+ assertNotSuggested('z'); |
+ } |
+ |
+ test_partFile_Constructor2() async { |
+ // SimpleIdentifier TypeName ConstructorName |
+ addSource( |
+ '/testB.dart', |
+ ''' |
+ lib B; |
+ int T1; |
+ F1() { } |
+ class X {X.c(); X._d(); z() {}}'''); |
+ addSource( |
+ '/testA.dart', |
+ ''' |
+ part of libA; |
+ class B { }'''); |
+ addTestSource(''' |
+ library libA; |
+ import "/testB.dart"; |
+ part "/testA.dart"; |
+ class A { A({String boo: 'hoo'}) { } } |
+ main() {new ^} |
+ var m;'''); |
+ await computeLibrariesContaining(); |
+ await computeSuggestions(); |
+ expect(replacementOffset, completionOffset); |
+ expect(replacementLength, 0); |
+ assertSuggestConstructor('B'); |
+ // Suggested by ConstructorContributor |
+ assertNotSuggested('A'); |
+ // Suggested by ImportedReferenceContributor |
+ assertNotSuggested('Object'); |
+ assertNotSuggested('X.c'); |
+ assertNotSuggested('X._d'); |
+ assertNotSuggested('F1'); |
+ assertNotSuggested('T1'); |
+ assertNotSuggested('_d'); |
+ assertNotSuggested('z'); |
+ assertNotSuggested('m'); |
+ } |
+ |
+ test_partFile_TypeName2() async { |
+ addSource( |
+ '/testB.dart', |
+ ''' |
+ lib B; |
+ int T1; |
+ F1() { } |
+ class X {X.c(); X._d(); z() {}}'''); |
+ addSource( |
+ '/testA.dart', |
+ ''' |
+ part of libA; |
+ class B { var b1; b2(){}} |
+ int bf() => 0; |
+ var n;'''); |
+ addTestSource(''' |
+ library libA; |
+ import "/testB.dart"; |
+ part "/testA.dart"; |
+ class A { A({String boo: 'hoo'}) { } } |
+ main() {^} |
+ var m;'''); |
+ await computeLibrariesContaining(); |
+ await computeSuggestions(); |
+ expect(replacementOffset, completionOffset); |
+ expect(replacementLength, 0); |
+ assertSuggestClass('B'); |
+ assertSuggestFunction('bf', 'int', |
+ relevance: DART_RELEVANCE_LOCAL_FUNCTION); |
+ assertSuggestTopLevelVar('n', null, |
+ relevance: DART_RELEVANCE_LOCAL_TOP_LEVEL_VARIABLE); |
+ assertNotSuggested('b1'); |
+ assertNotSuggested('b2'); |
+ // Suggested by ConstructorContributor |
+ assertNotSuggested('A'); |
+ // Suggested by ImportedReferenceContributor |
+ assertNotSuggested('Object'); |
+ assertNotSuggested('X.c'); |
+ assertNotSuggested('X._d'); |
+ assertNotSuggested('F1'); |
+ assertNotSuggested('T1'); |
+ assertNotSuggested('_d'); |
+ assertNotSuggested('z'); |
+ assertNotSuggested('m'); |
+ } |
+} |