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

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

Issue 1507513002: extract field formal contributor from prefixed element contributor (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: merge 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/field_formal_contributor_test.dart
diff --git a/pkg/analysis_server/test/services/completion/dart/field_formal_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/field_formal_contributor_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..2f3915936a4f21ece4b1f11da8c9645d0e7bc204
--- /dev/null
+++ b/pkg/analysis_server/test/services/completion/dart/field_formal_contributor_test.dart
@@ -0,0 +1,167 @@
+// Copyright (c) 2014, 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.field_formal;
+
+import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
+import 'package:analysis_server/src/services/completion/dart/field_formal_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(FieldFormalContributorTest);
+}
+
+@reflectiveTest
+class FieldFormalContributorTest extends DartCompletionContributorTest {
+ @override
+ DartCompletionContributor createContributor() {
+ return new FieldFormalContributor();
+ }
+
+ test_ThisExpression_constructor_param() async {
+ // SimpleIdentifier FieldFormalParameter FormalParameterList
+ addTestSource('''
+ main() { }
+ class I {X get f => new A();get _g => new A();}
+ class A implements I {
+ A(this.^) {}
+ A.z() {}
+ var b; X _c; static sb;
+ X get d => new A();get _e => new A();
+ // no semicolon between completion point and next statement
+ set s1(I x) {} set _s2(I x) {m(null);}
+ m(X x) {} I _n(X x) {}}
+ class X{}''');
+ await computeSuggestions();
+ expect(replacementOffset, completionOffset);
+ expect(replacementLength, 0);
+ assertSuggestField('b', null, relevance: DART_RELEVANCE_LOCAL_FIELD);
+ assertSuggestField('_c', 'X', relevance: DART_RELEVANCE_LOCAL_FIELD);
+ assertNotSuggested('sb');
+ assertNotSuggested('d');
+ assertNotSuggested('_e');
+ assertNotSuggested('f');
+ assertNotSuggested('_g');
+ assertNotSuggested('m');
+ assertNotSuggested('_n');
+ assertNotSuggested('s1');
+ assertNotSuggested('_s2');
+ assertNotSuggested('z');
+ assertNotSuggested('I');
+ assertNotSuggested('A');
+ assertNotSuggested('X');
+ assertNotSuggested('Object');
+ assertNotSuggested('==');
+ }
+
+ test_ThisExpression_constructor_param2() async {
+ // SimpleIdentifier FieldFormalParameter FormalParameterList
+ addTestSource('''
+ main() { }
+ class I {X get f => new A();get _g => new A();}
+ class A implements I {
+ A(this.b^) {}
+ A.z() {}
+ var b; X _c;
+ X get d => new A();get _e => new A();
+ // no semicolon between completion point and next statement
+ set s1(I x) {} set _s2(I x) {m(null);}
+ m(X x) {} I _n(X x) {}}
+ class X{}''');
+ await computeSuggestions();
+ expect(replacementOffset, completionOffset - 1);
+ expect(replacementLength, 1);
+ assertSuggestField('b', null, relevance: DART_RELEVANCE_LOCAL_FIELD);
+ assertSuggestField('_c', 'X', relevance: DART_RELEVANCE_LOCAL_FIELD);
+ assertNotSuggested('d');
+ assertNotSuggested('_e');
+ assertNotSuggested('f');
+ assertNotSuggested('_g');
+ assertNotSuggested('m');
+ assertNotSuggested('_n');
+ assertNotSuggested('s1');
+ assertNotSuggested('_s2');
+ assertNotSuggested('z');
+ assertNotSuggested('I');
+ assertNotSuggested('A');
+ assertNotSuggested('X');
+ assertNotSuggested('Object');
+ assertNotSuggested('==');
+ }
+
+ test_ThisExpression_constructor_param3() async {
+ // SimpleIdentifier FieldFormalParameter FormalParameterList
+ addTestSource('''
+ main() { }
+ class I {X get f => new A();get _g => new A();}
+ class A implements I {
+ A(this.^b) {}
+ A.z() {}
+ var b; X _c;
+ X get d => new A();get _e => new A();
+ // no semicolon between completion point and next statement
+ set s1(I x) {} set _s2(I x) {m(null);}
+ m(X x) {} I _n(X x) {}}
+ class X{}''');
+ await computeSuggestions();
+ expect(replacementOffset, completionOffset);
+ expect(replacementLength, 1);
+ assertSuggestField('b', null, relevance: DART_RELEVANCE_LOCAL_FIELD);
+ assertSuggestField('_c', 'X', relevance: DART_RELEVANCE_LOCAL_FIELD);
+ assertNotSuggested('d');
+ assertNotSuggested('_e');
+ assertNotSuggested('f');
+ assertNotSuggested('_g');
+ assertNotSuggested('m');
+ assertNotSuggested('_n');
+ assertNotSuggested('s1');
+ assertNotSuggested('_s2');
+ assertNotSuggested('z');
+ assertNotSuggested('I');
+ assertNotSuggested('A');
+ assertNotSuggested('X');
+ assertNotSuggested('Object');
+ assertNotSuggested('==');
+ }
+
+ test_ThisExpression_constructor_param4() async {
+ // SimpleIdentifier FieldFormalParameter FormalParameterList
+ addTestSource('''
+ main() { }
+ class I {X get f => new A();get _g => new A();}
+ class A implements I {
+ A(this.b, this.^) {}
+ A.z() {}
+ var b; X _c;
+ X get d => new A();get _e => new A();
+ // no semicolon between completion point and next statement
+ set s1(I x) {} set _s2(I x) {m(null);}
+ m(X x) {} I _n(X x) {}}
+ class X{}''');
+ await computeSuggestions();
+ expect(replacementOffset, completionOffset);
+ expect(replacementLength, 0);
+ assertNotSuggested('b');
+ assertSuggestField('_c', 'X', relevance: DART_RELEVANCE_LOCAL_FIELD);
+ assertNotSuggested('d');
+ assertNotSuggested('_e');
+ assertNotSuggested('f');
+ assertNotSuggested('_g');
+ assertNotSuggested('m');
+ assertNotSuggested('_n');
+ assertNotSuggested('s1');
+ assertNotSuggested('_s2');
+ assertNotSuggested('z');
+ assertNotSuggested('I');
+ assertNotSuggested('A');
+ assertNotSuggested('X');
+ assertNotSuggested('Object');
+ assertNotSuggested('==');
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698