Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1695)

Unified Diff: pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart

Issue 1507303002: extract LibraryMemberContributor from prefixed element contributor (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart
diff --git a/pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..057fd7ff43d5840dce1d43c73171e2cb9d17b296
--- /dev/null
+++ b/pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart
@@ -0,0 +1,177 @@
+// 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.library_member;
+
+import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/library_member_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(LibraryMemberContributorTest);
+}
+
+@reflectiveTest
+class LibraryMemberContributorTest extends DartCompletionContributorTest {
+ @override
+ DartCompletionContributor createContributor() {
+ return new LibraryMemberContributor();
+ }
+
+ test_libraryPrefix() async {
+ // SimpleIdentifier PrefixedIdentifier ExpressionStatement
+ addTestSource('import "dart:async" as bar; foo() {bar.^}');
+ await computeSuggestions();
+ assertSuggestClass('Future');
+ assertNotSuggested('loadLibrary');
+ }
+
+ test_libraryPrefix2() async {
+ // SimpleIdentifier MethodInvocation ExpressionStatement
+ addTestSource('import "dart:async" as bar; foo() {bar.^ print("f")}');
+ await computeSuggestions();
+ assertSuggestClass('Future');
+ }
+
+ test_libraryPrefix3() async {
+ // SimpleIdentifier MethodInvocation ExpressionStatement
+ addTestSource('import "dart:async" as bar; foo() {new bar.F^ print("f")}');
+ await computeSuggestions();
+ assertSuggestConstructor('Future');
+ assertSuggestConstructor('Future.delayed');
+ }
+
+ test_libraryPrefix_deferred() async {
+ // SimpleIdentifier PrefixedIdentifier ExpressionStatement
+ addTestSource('import "dart:async" deferred as bar; foo() {bar.^}');
+ await computeSuggestions();
+ assertSuggestClass('Future');
+ assertSuggestFunction('loadLibrary', 'Future<dynamic>');
+ }
+
+ test_libraryPrefix_with_exports() async {
+ addSource('/libA.dart', 'library libA; class A { }');
+ addSource('/libB.dart', 'library libB; export "/libA.dart"; class B { }');
+ addTestSource('import "/libB.dart" as foo; main() {foo.^} class C { }');
+ await computeSuggestions();
+ assertSuggestClass('B');
+ assertSuggestClass('A');
+ }
+
+ test_PrefixedIdentifier_library() async {
+ // SimpleIdentifier PrefixedIdentifier ExpressionStatement
+ addSource(
+ '/testB.dart',
+ '''
+ lib B;
+ var T1;
+ class X { }
+ class Y { }''');
+ addTestSource('''
+ import "/testB.dart" as b;
+ var T2;
+ class A { }
+ main() {b.^}''');
+ await computeSuggestions();
+ expect(replacementOffset, completionOffset);
+ expect(replacementLength, 0);
+ assertSuggestClass('X');
+ assertSuggestClass('Y');
+ assertSuggestTopLevelVar('T1', null);
+ assertNotSuggested('T2');
+ assertNotSuggested('Object');
+ assertNotSuggested('b');
+ assertNotSuggested('A');
+ assertNotSuggested('==');
+ }
+
+ test_PrefixedIdentifier_library_typesOnly() async {
+ // SimpleIdentifier PrefixedIdentifier TypeName
+ addSource(
+ '/testB.dart',
+ '''
+ lib B;
+ var T1;
+ class X { }
+ class Y { }''');
+ addTestSource('''
+ import "/testB.dart" as b;
+ var T2;
+ class A { }
+ foo(b.^ f) {}''');
+ await computeSuggestions();
+ expect(replacementOffset, completionOffset);
+ expect(replacementLength, 0);
+ assertSuggestClass('X');
+ assertSuggestClass('Y');
+ assertNotSuggested('T1');
+ assertNotSuggested('T2');
+ assertNotSuggested('Object');
+ assertNotSuggested('b');
+ assertNotSuggested('A');
+ assertNotSuggested('==');
+ }
+
+ test_PrefixedIdentifier_library_typesOnly2() async {
+ // SimpleIdentifier PrefixedIdentifier TypeName
+ addSource(
+ '/testB.dart',
+ '''
+ lib B;
+ var T1;
+ class X { }
+ class Y { }''');
+ addTestSource('''
+ import "/testB.dart" as b;
+ var T2;
+ class A { }
+ foo(b.^) {}''');
+ await computeSuggestions();
+ expect(replacementOffset, completionOffset);
+ expect(replacementLength, 0);
+ assertSuggestClass('X');
+ assertSuggestClass('Y');
+ assertNotSuggested('T1');
+ assertNotSuggested('T2');
+ assertNotSuggested('Object');
+ assertNotSuggested('b');
+ assertNotSuggested('A');
+ assertNotSuggested('==');
+ }
+
+ test_PrefixedIdentifier_parameter() async {
+ // SimpleIdentifier PrefixedIdentifier ExpressionStatement
+ addSource(
+ '/testB.dart',
+ '''
+ lib B;
+ class _W {M y; var _z;}
+ class X extends _W {}
+ class M{}''');
+ addTestSource('''
+ import "/testB.dart";
+ foo(X x) {x.^}''');
+ await computeSuggestions();
+ assertNoSuggestions();
+ }
+
+ test_PrefixedIdentifier_prefix() async {
+ // SimpleIdentifier PrefixedIdentifier ExpressionStatement
+ addSource(
+ '/testA.dart',
+ '''
+ class A {static int bar = 10;}
+ _B() {}''');
+ addTestSource('''
+ import "/testA.dart";
+ class X {foo(){A^.bar}}''');
+ await computeSuggestions();
+ assertNoSuggestions();
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698