OLD | NEW |
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import 'dart:async'; | 5 import 'dart:async'; |
6 | 6 |
7 import 'package:analyzer/dart/ast/ast.dart'; | 7 import 'package:analyzer/dart/ast/ast.dart'; |
8 import 'package:analyzer/dart/ast/standard_resolution_map.dart'; | 8 import 'package:analyzer/dart/ast/standard_resolution_map.dart'; |
9 import 'package:analyzer/dart/element/element.dart'; | 9 import 'package:analyzer/dart/element/element.dart'; |
10 import 'package:analyzer/dart/element/type.dart'; | 10 import 'package:analyzer/dart/element/type.dart'; |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 expect(fileEditBuilder, new isInstanceOf<DartFileEditBuilder>()); | 67 expect(fileEditBuilder, new isInstanceOf<DartFileEditBuilder>()); |
68 SourceFileEdit fileEdit = fileEditBuilder.fileEdit; | 68 SourceFileEdit fileEdit = fileEditBuilder.fileEdit; |
69 expect(fileEdit.file, path); | 69 expect(fileEdit.file, path); |
70 } | 70 } |
71 } | 71 } |
72 | 72 |
73 @reflectiveTest | 73 @reflectiveTest |
74 class DartEditBuilderImplTest extends AbstractContextTest | 74 class DartEditBuilderImplTest extends AbstractContextTest |
75 with BuilderTestMixin { | 75 with BuilderTestMixin { |
76 test_importLibraries_DP() async { | 76 test_importLibraries_DP() async { |
77 await _assertImportLibraries( | 77 await _assertImportLibraries(''' |
78 ''' | |
79 import 'dart:aaa'; | 78 import 'dart:aaa'; |
80 import 'dart:ccc'; | 79 import 'dart:ccc'; |
81 | 80 |
82 import 'package:aaa/aaa.dart'; | 81 import 'package:aaa/aaa.dart'; |
83 import 'package:ccc/ccc.dart'; | 82 import 'package:ccc/ccc.dart'; |
84 ''', | 83 ''', ['dart:bbb', 'package:bbb/bbb.dart'], ''' |
85 ['dart:bbb', 'package:bbb/bbb.dart'], | |
86 ''' | |
87 import 'dart:aaa'; | 84 import 'dart:aaa'; |
88 import 'dart:bbb'; | 85 import 'dart:bbb'; |
89 import 'dart:ccc'; | 86 import 'dart:ccc'; |
90 | 87 |
91 import 'package:aaa/aaa.dart'; | 88 import 'package:aaa/aaa.dart'; |
92 import 'package:bbb/bbb.dart'; | 89 import 'package:bbb/bbb.dart'; |
93 import 'package:ccc/ccc.dart'; | 90 import 'package:ccc/ccc.dart'; |
94 '''); | 91 '''); |
95 } | 92 } |
96 | 93 |
97 test_importLibraries_PD() async { | 94 test_importLibraries_PD() async { |
98 await _assertImportLibraries( | 95 await _assertImportLibraries(''' |
99 ''' | |
100 import 'dart:aaa'; | 96 import 'dart:aaa'; |
101 import 'dart:ccc'; | 97 import 'dart:ccc'; |
102 | 98 |
103 import 'package:aaa/aaa.dart'; | 99 import 'package:aaa/aaa.dart'; |
104 import 'package:ccc/ccc.dart'; | 100 import 'package:ccc/ccc.dart'; |
105 ''', | 101 ''', ['package:bbb/bbb.dart', 'dart:bbb'], ''' |
106 ['package:bbb/bbb.dart', 'dart:bbb'], | |
107 ''' | |
108 import 'dart:aaa'; | 102 import 'dart:aaa'; |
109 import 'dart:bbb'; | 103 import 'dart:bbb'; |
110 import 'dart:ccc'; | 104 import 'dart:ccc'; |
111 | 105 |
112 import 'package:aaa/aaa.dart'; | 106 import 'package:aaa/aaa.dart'; |
113 import 'package:bbb/bbb.dart'; | 107 import 'package:bbb/bbb.dart'; |
114 import 'package:ccc/ccc.dart'; | 108 import 'package:ccc/ccc.dart'; |
115 '''); | 109 '''); |
116 } | 110 } |
117 | 111 |
118 test_importLibrary_afterLibraryDirective_dart() async { | 112 test_importLibrary_afterLibraryDirective_dart() async { |
119 await _assertImportLibraries( | 113 await _assertImportLibraries(''' |
120 ''' | |
121 library test; | 114 library test; |
122 | 115 |
123 class A {} | 116 class A {} |
124 ''', | 117 ''', ['dart:async'], ''' |
125 ['dart:async'], | |
126 ''' | |
127 library test; | 118 library test; |
128 | 119 |
129 import 'dart:async'; | 120 import 'dart:async'; |
130 | 121 |
131 | 122 |
132 class A {} | 123 class A {} |
133 '''); | 124 '''); |
134 } | 125 } |
135 | 126 |
136 test_importLibrary_dart_beforeDart() async { | 127 test_importLibrary_dart_beforeDart() async { |
137 await _assertImportLibraries( | 128 await _assertImportLibraries(''' |
138 ''' | |
139 import 'dart:aaa'; | 129 import 'dart:aaa'; |
140 import 'dart:ccc'; | 130 import 'dart:ccc'; |
141 ''', | 131 ''', ['dart:bbb'], ''' |
142 ['dart:bbb'], | |
143 ''' | |
144 import 'dart:aaa'; | 132 import 'dart:aaa'; |
145 import 'dart:bbb'; | 133 import 'dart:bbb'; |
146 import 'dart:ccc'; | 134 import 'dart:ccc'; |
147 '''); | 135 '''); |
148 } | 136 } |
149 | 137 |
150 test_importLibrary_dart_beforeDart_first() async { | 138 test_importLibrary_dart_beforeDart_first() async { |
151 await _assertImportLibraries( | 139 await _assertImportLibraries(''' |
152 ''' | |
153 import 'dart:bbb'; | 140 import 'dart:bbb'; |
154 ''', | 141 ''', ['dart:aaa'], ''' |
155 ['dart:aaa'], | |
156 ''' | |
157 import 'dart:aaa'; | 142 import 'dart:aaa'; |
158 import 'dart:bbb'; | 143 import 'dart:bbb'; |
159 '''); | 144 '''); |
160 } | 145 } |
161 | 146 |
162 test_importLibrary_dart_beforePackage() async { | 147 test_importLibrary_dart_beforePackage() async { |
163 await _assertImportLibraries( | 148 await _assertImportLibraries(''' |
164 ''' | |
165 import 'package:foo/foo.dart'; | 149 import 'package:foo/foo.dart'; |
166 ''', | 150 ''', ['dart:async'], ''' |
167 ['dart:async'], | |
168 ''' | |
169 import 'dart:async'; | 151 import 'dart:async'; |
170 | 152 |
171 import 'package:foo/foo.dart'; | 153 import 'package:foo/foo.dart'; |
172 '''); | 154 '''); |
173 } | 155 } |
174 | 156 |
175 test_importLibrary_package_afterDart() async { | 157 test_importLibrary_package_afterDart() async { |
176 await _assertImportLibraries( | 158 await _assertImportLibraries(''' |
177 ''' | |
178 import 'dart:async'; | 159 import 'dart:async'; |
179 ''', | 160 ''', ['package:aaa/aaa.dart'], ''' |
180 ['package:aaa/aaa.dart'], | |
181 ''' | |
182 import 'dart:async'; | 161 import 'dart:async'; |
183 | 162 |
184 import 'package:aaa/aaa.dart'; | 163 import 'package:aaa/aaa.dart'; |
185 '''); | 164 '''); |
186 } | 165 } |
187 | 166 |
188 test_importLibrary_package_afterPackage() async { | 167 test_importLibrary_package_afterPackage() async { |
189 await _assertImportLibraries( | 168 await _assertImportLibraries(''' |
190 ''' | |
191 import 'package:aaa/a1.dart'; | 169 import 'package:aaa/a1.dart'; |
192 | 170 |
193 import 'foo.dart'; | 171 import 'foo.dart'; |
194 ''', | 172 ''', ['package:aaa/a2.dart'], ''' |
195 ['package:aaa/a2.dart'], | |
196 ''' | |
197 import 'package:aaa/a1.dart'; | 173 import 'package:aaa/a1.dart'; |
198 import 'package:aaa/a2.dart'; | 174 import 'package:aaa/a2.dart'; |
199 | 175 |
200 import 'foo.dart'; | 176 import 'foo.dart'; |
201 '''); | 177 '''); |
202 } | 178 } |
203 | 179 |
204 test_importLibrary_package_beforePackage() async { | 180 test_importLibrary_package_beforePackage() async { |
205 await _assertImportLibraries( | 181 await _assertImportLibraries(''' |
206 ''' | |
207 import 'package:aaa/a1.dart'; | 182 import 'package:aaa/a1.dart'; |
208 import 'package:aaa/a3.dart'; | 183 import 'package:aaa/a3.dart'; |
209 | 184 |
210 import 'foo.dart'; | 185 import 'foo.dart'; |
211 ''', | 186 ''', ['package:aaa/a2.dart'], ''' |
212 ['package:aaa/a2.dart'], | |
213 ''' | |
214 import 'package:aaa/a1.dart'; | 187 import 'package:aaa/a1.dart'; |
215 import 'package:aaa/a2.dart'; | 188 import 'package:aaa/a2.dart'; |
216 import 'package:aaa/a3.dart'; | 189 import 'package:aaa/a3.dart'; |
217 | 190 |
218 import 'foo.dart'; | 191 import 'foo.dart'; |
219 '''); | 192 '''); |
220 } | 193 } |
221 | 194 |
222 test_importLibrary_package_beforePackage_first() async { | 195 test_importLibrary_package_beforePackage_first() async { |
223 await _assertImportLibraries( | 196 await _assertImportLibraries(''' |
224 ''' | |
225 import 'package:aaa/a2.dart'; | 197 import 'package:aaa/a2.dart'; |
226 | 198 |
227 import 'foo.dart'; | 199 import 'foo.dart'; |
228 ''', | 200 ''', ['package:aaa/a1.dart'], ''' |
229 ['package:aaa/a1.dart'], | |
230 ''' | |
231 import 'package:aaa/a1.dart'; | 201 import 'package:aaa/a1.dart'; |
232 import 'package:aaa/a2.dart'; | 202 import 'package:aaa/a2.dart'; |
233 | 203 |
234 import 'foo.dart'; | 204 import 'foo.dart'; |
235 '''); | 205 '''); |
236 } | 206 } |
237 | 207 |
238 test_importLibrary_package_beforeRelative() async { | 208 test_importLibrary_package_beforeRelative() async { |
239 await _assertImportLibraries( | 209 await _assertImportLibraries(''' |
240 ''' | |
241 import 'foo.dart'; | 210 import 'foo.dart'; |
242 ''', | 211 ''', ['package:aaa/aaa.dart'], ''' |
243 ['package:aaa/aaa.dart'], | |
244 ''' | |
245 import 'package:aaa/aaa.dart'; | 212 import 'package:aaa/aaa.dart'; |
246 | 213 |
247 import 'foo.dart'; | 214 import 'foo.dart'; |
248 '''); | 215 '''); |
249 } | 216 } |
250 | 217 |
251 test_importLibrary_relative_afterDart() async { | 218 test_importLibrary_relative_afterDart() async { |
252 await _assertImportLibraries( | 219 await _assertImportLibraries(''' |
253 ''' | |
254 import 'dart:async'; | 220 import 'dart:async'; |
255 ''', | 221 ''', ['aaa.dart'], ''' |
256 ['aaa.dart'], | |
257 ''' | |
258 import 'dart:async'; | 222 import 'dart:async'; |
259 | 223 |
260 import 'aaa.dart'; | 224 import 'aaa.dart'; |
261 '''); | 225 '''); |
262 } | 226 } |
263 | 227 |
264 test_importLibrary_relative_afterPackage() async { | 228 test_importLibrary_relative_afterPackage() async { |
265 await _assertImportLibraries( | 229 await _assertImportLibraries(''' |
266 ''' | |
267 import 'package:foo/foo.dart'; | 230 import 'package:foo/foo.dart'; |
268 ''', | 231 ''', ['aaa.dart'], ''' |
269 ['aaa.dart'], | |
270 ''' | |
271 import 'package:foo/foo.dart'; | 232 import 'package:foo/foo.dart'; |
272 | 233 |
273 import 'aaa.dart'; | 234 import 'aaa.dart'; |
274 '''); | 235 '''); |
275 } | 236 } |
276 | 237 |
277 test_importLibrary_relative_beforeRelative() async { | 238 test_importLibrary_relative_beforeRelative() async { |
278 await _assertImportLibraries( | 239 await _assertImportLibraries(''' |
279 ''' | |
280 import 'dart:async'; | 240 import 'dart:async'; |
281 | 241 |
282 import 'package:foo/foo.dart'; | 242 import 'package:foo/foo.dart'; |
283 | 243 |
284 import 'aaa.dart'; | 244 import 'aaa.dart'; |
285 import 'ccc.dart'; | 245 import 'ccc.dart'; |
286 ''', | 246 ''', ['bbb.dart'], ''' |
287 ['bbb.dart'], | |
288 ''' | |
289 import 'dart:async'; | 247 import 'dart:async'; |
290 | 248 |
291 import 'package:foo/foo.dart'; | 249 import 'package:foo/foo.dart'; |
292 | 250 |
293 import 'aaa.dart'; | 251 import 'aaa.dart'; |
294 import 'bbb.dart'; | 252 import 'bbb.dart'; |
295 import 'ccc.dart'; | 253 import 'ccc.dart'; |
296 '''); | 254 '''); |
297 } | 255 } |
298 | 256 |
299 test_importLibrary_relative_beforeRelative_first() async { | 257 test_importLibrary_relative_beforeRelative_first() async { |
300 await _assertImportLibraries( | 258 await _assertImportLibraries(''' |
301 ''' | |
302 import 'dart:async'; | 259 import 'dart:async'; |
303 | 260 |
304 import 'package:foo/foo.dart'; | 261 import 'package:foo/foo.dart'; |
305 | 262 |
306 import 'bbb.dart'; | 263 import 'bbb.dart'; |
307 ''', | 264 ''', ['aaa.dart'], ''' |
308 ['aaa.dart'], | |
309 ''' | |
310 import 'dart:async'; | 265 import 'dart:async'; |
311 | 266 |
312 import 'package:foo/foo.dart'; | 267 import 'package:foo/foo.dart'; |
313 | 268 |
314 import 'aaa.dart'; | 269 import 'aaa.dart'; |
315 import 'bbb.dart'; | 270 import 'bbb.dart'; |
316 '''); | 271 '''); |
317 } | 272 } |
318 | 273 |
319 test_importLibrary_relative_last() async { | 274 test_importLibrary_relative_last() async { |
320 await _assertImportLibraries( | 275 await _assertImportLibraries(''' |
321 ''' | |
322 import 'dart:async'; | 276 import 'dart:async'; |
323 | 277 |
324 import 'package:foo/foo.dart'; | 278 import 'package:foo/foo.dart'; |
325 ''', | 279 ''', ['aaa.dart'], ''' |
326 ['aaa.dart'], | |
327 ''' | |
328 import 'dart:async'; | 280 import 'dart:async'; |
329 | 281 |
330 import 'package:foo/foo.dart'; | 282 import 'package:foo/foo.dart'; |
331 | 283 |
332 import 'aaa.dart'; | 284 import 'aaa.dart'; |
333 '''); | 285 '''); |
334 } | 286 } |
335 | 287 |
336 test_writeClassDeclaration_interfaces() async { | 288 test_writeClassDeclaration_interfaces() async { |
337 String path = provider.convertPath('/test.dart'); | 289 String path = provider.convertPath('/test.dart'); |
(...skipping 1116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1454 expect( | 1406 expect( |
1455 edits[0].replacement, equalsIgnoringWhitespace("import 'dart:async';")); | 1407 edits[0].replacement, equalsIgnoringWhitespace("import 'dart:async';")); |
1456 expect(edits[1].replacement, equalsIgnoringWhitespace('Future<String>')); | 1408 expect(edits[1].replacement, equalsIgnoringWhitespace('Future<String>')); |
1457 } | 1409 } |
1458 } | 1410 } |
1459 | 1411 |
1460 @reflectiveTest | 1412 @reflectiveTest |
1461 class DartLinkedEditBuilderImplTest extends AbstractContextTest { | 1413 class DartLinkedEditBuilderImplTest extends AbstractContextTest { |
1462 test_addSuperTypesAsSuggestions() async { | 1414 test_addSuperTypesAsSuggestions() async { |
1463 String path = provider.convertPath('/test.dart'); | 1415 String path = provider.convertPath('/test.dart'); |
1464 addSource( | 1416 addSource(path, ''' |
1465 path, | |
1466 ''' | |
1467 class A {} | 1417 class A {} |
1468 class B extends A {} | 1418 class B extends A {} |
1469 class C extends B {} | 1419 class C extends B {} |
1470 '''); | 1420 '''); |
1471 CompilationUnit unit = (await driver.getResult(path))?.unit; | 1421 CompilationUnit unit = (await driver.getResult(path))?.unit; |
1472 ClassDeclaration classC = unit.declarations[2]; | 1422 ClassDeclaration classC = unit.declarations[2]; |
1473 DartLinkedEditBuilderImpl builder = new DartLinkedEditBuilderImpl(null); | 1423 DartLinkedEditBuilderImpl builder = new DartLinkedEditBuilderImpl(null); |
1474 builder.addSuperTypesAsSuggestions(classC.element.type); | 1424 builder.addSuperTypesAsSuggestions(classC.element.type); |
1475 List<LinkedEditSuggestion> suggestions = builder.suggestions; | 1425 List<LinkedEditSuggestion> suggestions = builder.suggestions; |
1476 expect(suggestions, hasLength(4)); | 1426 expect(suggestions, hasLength(4)); |
1477 expect(suggestions.map((s) => s.value), | 1427 expect(suggestions.map((s) => s.value), |
1478 unorderedEquals(['Object', 'A', 'B', 'C'])); | 1428 unorderedEquals(['Object', 'A', 'B', 'C'])); |
1479 } | 1429 } |
1480 } | 1430 } |
1481 | 1431 |
1482 class _MockSource implements Source { | 1432 class _MockSource implements Source { |
1483 @override | 1433 @override |
1484 final String fullName; | 1434 final String fullName; |
1485 | 1435 |
1486 @override | 1436 @override |
1487 final Uri uri; | 1437 final Uri uri; |
1488 | 1438 |
1489 _MockSource(this.fullName, this.uri); | 1439 _MockSource(this.fullName, this.uri); |
1490 | 1440 |
1491 @override | 1441 @override |
1492 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | 1442 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
1493 } | 1443 } |
OLD | NEW |