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

Side by Side Diff: pkg/analysis_services/test/correction/name_suggestion_test.dart

Issue 484733003: Import analysis_services.dart into analysis_server.dart. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 library test.services.correction.name_suggestion;
6
7 import 'package:analysis_services/src/correction/name_suggestion.dart';
8 import 'package:analysis_testing/abstract_single_unit.dart';
9 import 'package:analysis_testing/reflective_tests.dart';
10 import 'package:analyzer/src/generated/ast.dart';
11 import 'package:analyzer/src/generated/element.dart';
12 import 'package:unittest/unittest.dart';
13
14
15 main() {
16 groupSep = ' | ';
17 runReflectiveTests(VariableNameSuggestionTest);
18 }
19
20
21 @ReflectiveTestCase()
22 class VariableNameSuggestionTest extends AbstractSingleUnitTest {
23 void test_forExpression_cast() {
24 resolveTestUnit('''
25 main() {
26 var sortedNodes;
27 var res = sortedNodes as String;
28 }
29 ''');
30 var excluded = new Set.from([]);
31 var expr = findNodeAtString('as String', (node) => node is AsExpression);
32 expect(
33 getVariableNameSuggestionsForExpression(null, expr, excluded),
34 unorderedEquals(['sortedNodes', 'nodes']));
35 }
36
37 void test_forExpression_expectedType() {
38 resolveTestUnit('''
39 class TreeNode {}
40 main() {
41 TreeNode node = null;
42 }
43 ''');
44 Set excluded = new Set.from([]);
45 DartType expectedType = (findElement('node') as LocalVariableElement).type;
46 Expression assignedExpression =
47 findNodeAtString('null;', (node) => node is NullLiteral);
48 List<String> suggestions =
49 getVariableNameSuggestionsForExpression(
50 expectedType,
51 assignedExpression,
52 excluded);
53 expect(suggestions, unorderedEquals(['treeNode', 'node']));
54 }
55
56 void test_forExpression_expectedType_String() {
57 resolveTestUnit('''
58 main() {
59 String res = 'abc';
60 }
61 ''');
62 DartType expectedType = (findElement('res') as LocalVariableElement).type;
63 Expression assignedExpression = findNodeAtString("'abc';");
64 // first choice for "String" is "s"
65 expect(
66 getVariableNameSuggestionsForExpression(
67 expectedType,
68 assignedExpression,
69 new Set.from([])),
70 unorderedEquals(['s']));
71 }
72
73 void test_forExpression_expectedType_double() {
74 resolveTestUnit('''
75 main() {
76 double res = 0.0;
77 }
78 ''');
79 DartType expectedType = (findElement('res') as LocalVariableElement).type;
80 Expression assignedExpression = findNodeAtString('0.0;');
81 // first choice for "double" is "d"
82 expect(
83 getVariableNameSuggestionsForExpression(
84 expectedType,
85 assignedExpression,
86 new Set.from([])),
87 unorderedEquals(['d']));
88 // if "d" is used, try "e", "f", etc
89 expect(
90 getVariableNameSuggestionsForExpression(
91 expectedType,
92 assignedExpression,
93 new Set.from(['d', 'e'])),
94 unorderedEquals(['f']));
95 }
96
97 void test_forExpression_expectedType_int() {
98 resolveTestUnit('''
99 main() {
100 int res = 0;
101 }
102 ''');
103 DartType expectedType = (findElement('res') as LocalVariableElement).type;
104 Expression assignedExpression = findNodeAtString('0;');
105 // first choice for "int" is "i"
106 expect(
107 getVariableNameSuggestionsForExpression(
108 expectedType,
109 assignedExpression,
110 new Set.from([])),
111 unorderedEquals(['i']));
112 // if "i" is used, try "j", "k", etc
113 expect(
114 getVariableNameSuggestionsForExpression(
115 expectedType,
116 assignedExpression,
117 new Set.from(['i', 'j'])),
118 unorderedEquals(['k']));
119 }
120
121 void test_forExpression_instanceCreation() {
122 verifyNoTestUnitErrors = false;
123 resolveTestUnit('''
124 import 'dart:math' as p;
125 main(p) {
126 new NoSuchClass();
127 new p.NoSuchClass();
128 new NoSuchClass.named();
129 }
130 ''');
131 var excluded = new Set.from([]);
132 expect(
133 getVariableNameSuggestionsForExpression(
134 null,
135 findNodeAtString('new NoSuchClass()'),
136 excluded),
137 unorderedEquals(['noSuchClass', 'suchClass', 'class']));
138 expect(
139 getVariableNameSuggestionsForExpression(
140 null,
141 findNodeAtString('new NoSuchClass.named()'),
142 excluded),
143 unorderedEquals(['noSuchClass', 'suchClass', 'class']));
144 // TODO(scheglov) This test does not work.
145 // In "p.NoSuchClass" the identifier "p" is not resolved to a PrefixElement.
146 // expect(
147 // getVariableNameSuggestionsForExpression(
148 // null,
149 // findNodeAtString('new p.NoSuchClass()'),
150 // excluded),
151 // unorderedEquals(['noSuchClass', 'suchClass', 'class']));
152 }
153
154 void test_forExpression_invocationArgument_named() {
155 resolveTestUnit('''
156 foo({a, b, c}) {}
157 main() {
158 foo(a: 111, c: 333, b: 222);
159 }
160 ''');
161 var excluded = new Set.from([]);
162 {
163 var expr = findNodeAtString('111');
164 expect(
165 getVariableNameSuggestionsForExpression(null, expr, excluded),
166 unorderedEquals(['a']));
167 }
168 {
169 var expr = findNodeAtString('222');
170 expect(
171 getVariableNameSuggestionsForExpression(null, expr, excluded),
172 unorderedEquals(['b']));
173 }
174 {
175 var expr = findNodeAtString('333');
176 expect(
177 getVariableNameSuggestionsForExpression(null, expr, excluded),
178 unorderedEquals(['c']));
179 }
180 }
181
182 void test_forExpression_invocationArgument_optional() {
183 resolveTestUnit('''
184 foo(a, [b = 2, c = 3]) {}
185 main() {
186 foo(111, 222, 333);
187 }
188 ''');
189 var excluded = new Set.from([]);
190 {
191 var expr = findNodeAtString('111');
192 expect(
193 getVariableNameSuggestionsForExpression(null, expr, excluded),
194 unorderedEquals(['a']));
195 }
196 {
197 var expr = findNodeAtString('222');
198 expect(
199 getVariableNameSuggestionsForExpression(null, expr, excluded),
200 unorderedEquals(['b']));
201 }
202 {
203 var expr = findNodeAtString('333');
204 expect(
205 getVariableNameSuggestionsForExpression(null, expr, excluded),
206 unorderedEquals(['c']));
207 }
208 }
209
210 void test_forExpression_invocationArgument_positional() {
211 resolveTestUnit('''
212 foo(a, b) {}
213 main() {
214 foo(111, 222);
215 }
216 ''');
217 var excluded = new Set.from([]);
218 {
219 var expr = findNodeAtString('111');
220 expect(
221 getVariableNameSuggestionsForExpression(null, expr, excluded),
222 unorderedEquals(['a']));
223 }
224 {
225 var expr = findNodeAtString('222');
226 expect(
227 getVariableNameSuggestionsForExpression(null, expr, excluded),
228 unorderedEquals(['b']));
229 }
230 }
231
232 void test_forExpression_methodInvocation() {
233 resolveTestUnit('''
234 main(p) {
235 var res = p.getSortedNodes();
236 }
237 ''');
238 var excluded = new Set.from([]);
239 var expr = findNodeAtString('p.get', (node) => node is MethodInvocation);
240 expect(
241 getVariableNameSuggestionsForExpression(null, expr, excluded),
242 unorderedEquals(['sortedNodes', 'nodes']));
243 }
244
245 void test_forExpression_methodInvocation_noPrefix() {
246 resolveTestUnit('''
247 main(p) {
248 var res = p.sortedNodes();
249 }
250 ''');
251 var excluded = new Set.from([]);
252 var expr = findNodeAtString('p.sorted', (node) => node is MethodInvocation);
253 expect(
254 getVariableNameSuggestionsForExpression(null, expr, excluded),
255 unorderedEquals(['sortedNodes', 'nodes']));
256 }
257
258 void test_forExpression_name_get() {
259 resolveTestUnit('''
260 main(p) {
261 var res = p.get();
262 }
263 ''');
264 var excluded = new Set.from([]);
265 var expr = findNodeAtString('p.get', (node) => node is MethodInvocation);
266 expect(
267 getVariableNameSuggestionsForExpression(null, expr, excluded),
268 unorderedEquals([]));
269 }
270
271 void test_forExpression_privateName() {
272 resolveTestUnit('''
273 main(p) {
274 p._name;
275 p._computeSuffix();
276 }
277 ''');
278 var excluded = new Set.from([]);
279 expect(
280 getVariableNameSuggestionsForExpression(
281 null,
282 findNodeAtString('p._name', (node) => node is PrefixedIdentifier),
283 excluded),
284 unorderedEquals(['name']));
285 expect(
286 getVariableNameSuggestionsForExpression(
287 null,
288 findNodeAtString('p._compute', (node) => node is MethodInvocation),
289 excluded),
290 unorderedEquals(['computeSuffix', 'suffix']));
291 }
292
293 void test_forExpression_propertyAccess() {
294 resolveTestUnit('''
295 main(p) {
296 var res = p.sortedNodes;
297 }
298 ''');
299 var excluded = new Set.from([]);
300 expect(
301 getVariableNameSuggestionsForExpression(
302 null,
303 findNodeAtString('p.sorted', (node) => node is PrefixedIdentifier),
304 excluded),
305 unorderedEquals(['sortedNodes', 'nodes']));
306 }
307
308 void test_forExpression_simpleName() {
309 resolveTestUnit('''
310 main(p) {
311 var sortedNodes = null;
312 var res = sortedNodes;
313 }
314 ''');
315 var excluded = new Set.from([]);
316 var expr = findNodeAtString('sortedNodes;');
317 expect(
318 getVariableNameSuggestionsForExpression(null, expr, excluded),
319 unorderedEquals(['sortedNodes', 'nodes']));
320 }
321
322 void test_forExpression_unqualifiedInvocation() {
323 resolveTestUnit('''
324 getSortedNodes() => [];
325 main(p) {
326 var res = getSortedNodes();
327 }
328 ''');
329 var excluded = new Set.from([]);
330 expect(
331 getVariableNameSuggestionsForExpression(
332 null,
333 findNodeAtString('getSortedNodes();', (node) => node is MethodInvoca tion),
334 excluded),
335 unorderedEquals(['sortedNodes', 'nodes']));
336 }
337
338 void test_forText() {
339 {
340 Set excluded = new Set.from([]);
341 List<String> suggestions =
342 getVariableNameSuggestionsForText('Goodbye, cruel world!', excluded);
343 expect(
344 suggestions,
345 unorderedEquals(['goodbyeCruelWorld', 'cruelWorld', 'world']));
346 }
347 {
348 Set excluded = new Set.from(['world']);
349 List<String> suggestions =
350 getVariableNameSuggestionsForText('Goodbye, cruel world!', excluded);
351 expect(
352 suggestions,
353 unorderedEquals(['goodbyeCruelWorld', 'cruelWorld', 'world2']));
354 }
355 }
356
357 void test_getCamelWords_empty() {
358 expect(getCamelWords(''), unorderedEquals([]));
359 }
360
361 void test_getCamelWords_multipleUpper() {
362 expect(
363 getCamelWords('sortedHTMLNodes'),
364 unorderedEquals(['sorted', 'HTML', 'Nodes']));
365 }
366
367 void test_getCamelWords_simpleCamel() {
368 expect(
369 getCamelWords('mySimpleText'),
370 unorderedEquals(['my', 'Simple', 'Text']));
371 }
372
373 void test_getCamelWords_simpleName() {
374 expect(getCamelWords('name'), unorderedEquals(['name']));
375 }
376 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698