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

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

Issue 2839273002: Named arg completion fixes (flutter-intellij#551) (Closed)
Patch Set: formatting Created 3 years, 8 months 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/arglist_contributor_test.dart
diff --git a/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart
index b06ac9ef0288a3d427f1e4ff46d8072c5cf7feb4..c47e2241b9932d62c11b449e1a155cd232aaee00 100644
--- a/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart
@@ -32,6 +32,20 @@ class ArgListContributorTest extends DartCompletionContributorTest {
}
}
+ /**
+ * Assert that there is a suggestion with the given parameter [name] that has
+ * the given [completion], [selectionOffset] and [selectionLength].
+ */
+ void assertSuggestArgumentAndCompletion(String name,
+ {String completion, int selectionOffset, int selectionLength: 0}) {
+ CompletionSuggestion suggestion =
+ suggestions.firstWhere((s) => s.parameterName == name);
+ expect(suggestion, isNotNull);
+ expect(suggestion.completion, completion);
+ expect(suggestion.selectionOffset, selectionOffset);
+ expect(suggestion.selectionLength, selectionLength);
+ }
+
void assertSuggestArgumentList(
List<String> paramNames, List<String> paramTypes) {
// DEPRECATED... argument lists are no longer suggested.
@@ -84,10 +98,15 @@ class ArgListContributorTest extends DartCompletionContributorTest {
* the only suggestions.
*/
void assertSuggestArgumentsAndTypes(
- {Map<String, String> namedArgumentsWithTypes, bool includeColon: true}) {
+ {Map<String, String> namedArgumentsWithTypes,
+ bool includeColon: true,
+ bool includeComma: false}) {
List<CompletionSuggestion> expected = new List<CompletionSuggestion>();
namedArgumentsWithTypes.forEach((String name, String type) {
String completion = includeColon ? '$name: ' : name;
+ if (includeComma) {
+ completion = '$completion,';
+ }
expected.add(assertSuggest(completion,
csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
relevance: DART_RELEVANCE_NAMED_PARAMETER,
@@ -543,11 +562,76 @@ main() {
class A { A({int one, String two: 'defaultValue'}) { } }
main() { new A(^);}''');
await computeSuggestions();
+
+ assertSuggestArgumentsAndTypes(
+ namedArgumentsWithTypes: {'one': 'int', 'two': 'String'});
+ assertSuggestArgumentAndCompletion('one',
+ completion: 'one: ', selectionOffset: 5);
+ }
+
+ test_ArgumentList_local_constructor_named_param_1() async {
+ //
+ addTestSource('''
+class A { A({int one, String two: 'defaultValue'}) { } }
+main() { new A(o^);}''');
+ await computeSuggestions();
+
+ assertSuggestArgumentsAndTypes(
+ namedArgumentsWithTypes: {'one': 'int', 'two': 'String'});
+ assertSuggestArgumentAndCompletion('one',
+ completion: 'one: ', selectionOffset: 5);
+ }
+
+ test_ArgumentList_local_constructor_named_param_2() async {
+ //
+ addTestSource('''
+class A { A({int one, String two: 'defaultValue'}) { } }
+main() { new A(^o,);}''');
+ await computeSuggestions();
+
assertSuggestArgumentsAndTypes(
namedArgumentsWithTypes: {'one': 'int', 'two': 'String'});
+ assertSuggestArgumentAndCompletion('one',
+ completion: 'one: ', selectionOffset: 5);
+ }
+
+ test_ArgumentList_local_constructor_named_param_3() async {
+ //
+ addTestSource('''
+class A { A({int one, String two: 'defaultValue'}) { } }
+main() { new A(two: 'foo', ^);}''');
+ await computeSuggestions();
+
+ assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {'one': 'int'});
+ assertSuggestArgumentAndCompletion('one',
+ completion: 'one: ', selectionOffset: 5);
+ }
+
+ test_ArgumentList_local_constructor_named_param_4() async {
+ //
+ addTestSource('''
+class A { A({int one, String two: 'defaultValue'}) { } }
+main() { new A(two: 'foo', o^);}''');
+ await computeSuggestions();
+
+ assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {'one': 'int'});
+ assertSuggestArgumentAndCompletion('one',
+ completion: 'one: ', selectionOffset: 5);
}
- test_ArgumentList_local_constructor_named_param2() async {
+ test_ArgumentList_local_constructor_named_param_5() async {
+ //
+ addTestSource('''
+class A { A({int one, String two: 'defaultValue'}) { } }
+main() { new A(two: 'foo', o^,);}''');
+ await computeSuggestions();
+
+ assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {'one': 'int'});
+ assertSuggestArgumentAndCompletion('one',
+ completion: 'one: ', selectionOffset: 5);
+ }
+
+ test_ArgumentList_local_constructor_named_param_6() async {
//
addTestSource('''
class A { A.foo({int one, String two: 'defaultValue'}) { } }
@@ -557,6 +641,58 @@ main() { new A.foo(^);}''');
namedArgumentsWithTypes: {'one': 'int', 'two': 'String'});
}
+ test_ArgumentList_local_constructor_named_param_prefixed_prepend() async {
+ //
+ addTestSource('''
+class A { A({int one, String two: 'defaultValue'}) { } }
+main() { new A(o^ two: 'foo');}''');
+ await computeSuggestions();
+
+ assertSuggestArgumentsAndTypes(
+ namedArgumentsWithTypes: {'one': 'int'}, includeComma: true);
+ assertSuggestArgumentAndCompletion('one',
+ completion: 'one: ,', selectionOffset: 5);
+ }
+
+ test_ArgumentList_local_constructor_named_param_prepend() async {
+ //
+ addTestSource('''
+class A { A({int one, String two: 'defaultValue'}) { } }
+main() { new A(^ two: 'foo');}''');
+ await computeSuggestions();
+
+ assertSuggestArgumentsAndTypes(
+ namedArgumentsWithTypes: {'one': 'int'}, includeComma: true);
+ assertSuggestArgumentAndCompletion('one',
+ completion: 'one: ,', selectionOffset: 5);
+ }
+
+ test_ArgumentList_local_constructor_named_param_prepend_1() async {
+ //
+ addTestSource('''
+class A { A({int one, String two: 'defaultValue'}) { } }
+main() { new A(o^, two: 'foo');}''');
+ await computeSuggestions();
+
+ assertSuggestArgumentsAndTypes(
+ namedArgumentsWithTypes: {'one': 'int'}, includeComma: false);
+ assertSuggestArgumentAndCompletion('one',
+ completion: 'one: ', selectionOffset: 5);
+ }
+
+ test_ArgumentList_local_constructor_named_param_prepend_2() async {
+ //
+ addTestSource('''
+class A { A({int one, String two: 'defaultValue'}) { } }
+main() { new A(^, two: 'foo');}''');
+ await computeSuggestions();
+
+ assertSuggestArgumentsAndTypes(
+ namedArgumentsWithTypes: {'one': 'int'}, includeComma: false);
+ assertSuggestArgumentAndCompletion('one',
+ completion: 'one: ', selectionOffset: 5);
+ }
+
test_ArgumentList_local_function_1() async {
// ArgumentList MethodInvocation ExpressionStatement Block
addTestSource('''

Powered by Google App Engine
This is Rietveld 408576698