OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 'package:analysis_server/src/services/correction/util.dart'; | 5 import 'package:analysis_server/src/services/correction/util.dart'; |
6 import 'package:analyzer/src/generated/source.dart'; | 6 import 'package:analyzer/src/generated/source.dart'; |
7 import 'package:analyzer_plugin/protocol/protocol_common.dart'; | 7 import 'package:analyzer_plugin/protocol/protocol_common.dart'; |
8 import 'package:analyzer_plugin/src/utilities/string_utilities.dart'; | 8 import 'package:analyzer_plugin/src/utilities/string_utilities.dart'; |
9 import 'package:test/test.dart'; | 9 import 'package:test/test.dart'; |
10 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 10 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
11 | 11 |
12 import '../../abstract_single_unit.dart'; | 12 import '../../abstract_single_unit.dart'; |
13 | 13 |
14 main() { | 14 main() { |
15 defineReflectiveSuite(() { | 15 defineReflectiveSuite(() { |
16 defineReflectiveTests(UtilTest); | 16 defineReflectiveTests(UtilTest); |
17 }); | 17 }); |
18 } | 18 } |
19 | 19 |
20 @reflectiveTest | 20 @reflectiveTest |
21 class UtilTest extends AbstractSingleUnitTest { | 21 class UtilTest extends AbstractSingleUnitTest { |
22 test_addLibraryImports_dart_hasImports_between() async { | 22 test_addLibraryImports_dart_hasImports_between() async { |
23 await resolveTestUnit(''' | 23 await resolveTestUnit(''' |
24 import 'dart:async'; | 24 import 'dart:async'; |
25 import 'dart:math'; | 25 import 'dart:math'; |
26 '''); | 26 '''); |
27 Source newLibrary = _getDartSource('dart:collection'); | 27 Source newLibrary = _getDartSource('dart:collection'); |
28 _assertAddLibraryImport( | 28 _assertAddLibraryImport(<Source>[newLibrary], ''' |
29 <Source>[newLibrary], | |
30 ''' | |
31 import 'dart:async'; | 29 import 'dart:async'; |
32 import 'dart:collection'; | 30 import 'dart:collection'; |
33 import 'dart:math'; | 31 import 'dart:math'; |
34 '''); | 32 '''); |
35 } | 33 } |
36 | 34 |
37 test_addLibraryImports_dart_hasImports_first() async { | 35 test_addLibraryImports_dart_hasImports_first() async { |
38 await resolveTestUnit(''' | 36 await resolveTestUnit(''' |
39 import 'dart:collection'; | 37 import 'dart:collection'; |
40 import 'dart:math'; | 38 import 'dart:math'; |
41 '''); | 39 '''); |
42 Source newLibrary = _getDartSource('dart:async'); | 40 Source newLibrary = _getDartSource('dart:async'); |
43 _assertAddLibraryImport( | 41 _assertAddLibraryImport(<Source>[newLibrary], ''' |
44 <Source>[newLibrary], | |
45 ''' | |
46 import 'dart:async'; | 42 import 'dart:async'; |
47 import 'dart:collection'; | 43 import 'dart:collection'; |
48 import 'dart:math'; | 44 import 'dart:math'; |
49 '''); | 45 '''); |
50 } | 46 } |
51 | 47 |
52 test_addLibraryImports_dart_hasImports_last() async { | 48 test_addLibraryImports_dart_hasImports_last() async { |
53 await resolveTestUnit(''' | 49 await resolveTestUnit(''' |
54 import 'dart:async'; | 50 import 'dart:async'; |
55 import 'dart:collection'; | 51 import 'dart:collection'; |
56 '''); | 52 '''); |
57 Source newLibrary = _getDartSource('dart:math'); | 53 Source newLibrary = _getDartSource('dart:math'); |
58 _assertAddLibraryImport( | 54 _assertAddLibraryImport(<Source>[newLibrary], ''' |
59 <Source>[newLibrary], | |
60 ''' | |
61 import 'dart:async'; | 55 import 'dart:async'; |
62 import 'dart:collection'; | 56 import 'dart:collection'; |
63 import 'dart:math'; | 57 import 'dart:math'; |
64 '''); | 58 '''); |
65 } | 59 } |
66 | 60 |
67 test_addLibraryImports_dart_hasImports_multiple() async { | 61 test_addLibraryImports_dart_hasImports_multiple() async { |
68 await resolveTestUnit(''' | 62 await resolveTestUnit(''' |
69 import 'dart:collection'; | 63 import 'dart:collection'; |
70 import 'dart:math'; | 64 import 'dart:math'; |
71 '''); | 65 '''); |
72 Source newLibrary1 = _getDartSource('dart:async'); | 66 Source newLibrary1 = _getDartSource('dart:async'); |
73 Source newLibrary2 = _getDartSource('dart:html'); | 67 Source newLibrary2 = _getDartSource('dart:html'); |
74 _assertAddLibraryImport( | 68 _assertAddLibraryImport(<Source>[newLibrary1, newLibrary2], ''' |
75 <Source>[newLibrary1, newLibrary2], | |
76 ''' | |
77 import 'dart:async'; | 69 import 'dart:async'; |
78 import 'dart:collection'; | 70 import 'dart:collection'; |
79 import 'dart:html'; | 71 import 'dart:html'; |
80 import 'dart:math'; | 72 import 'dart:math'; |
81 '''); | 73 '''); |
82 } | 74 } |
83 | 75 |
84 test_addLibraryImports_dart_hasImports_multiple_first() async { | 76 test_addLibraryImports_dart_hasImports_multiple_first() async { |
85 await resolveTestUnit(''' | 77 await resolveTestUnit(''' |
86 import 'dart:html'; | 78 import 'dart:html'; |
87 import 'dart:math'; | 79 import 'dart:math'; |
88 '''); | 80 '''); |
89 Source newLibrary1 = _getDartSource('dart:async'); | 81 Source newLibrary1 = _getDartSource('dart:async'); |
90 Source newLibrary2 = _getDartSource('dart:collection'); | 82 Source newLibrary2 = _getDartSource('dart:collection'); |
91 _assertAddLibraryImport( | 83 _assertAddLibraryImport(<Source>[newLibrary1, newLibrary2], ''' |
92 <Source>[newLibrary1, newLibrary2], | |
93 ''' | |
94 import 'dart:async'; | 84 import 'dart:async'; |
95 import 'dart:collection'; | 85 import 'dart:collection'; |
96 import 'dart:html'; | 86 import 'dart:html'; |
97 import 'dart:math'; | 87 import 'dart:math'; |
98 '''); | 88 '''); |
99 } | 89 } |
100 | 90 |
101 test_addLibraryImports_dart_hasImports_multiple_last() async { | 91 test_addLibraryImports_dart_hasImports_multiple_last() async { |
102 await resolveTestUnit(''' | 92 await resolveTestUnit(''' |
103 import 'dart:async'; | 93 import 'dart:async'; |
104 import 'dart:collection'; | 94 import 'dart:collection'; |
105 '''); | 95 '''); |
106 Source newLibrary1 = _getDartSource('dart:html'); | 96 Source newLibrary1 = _getDartSource('dart:html'); |
107 Source newLibrary2 = _getDartSource('dart:math'); | 97 Source newLibrary2 = _getDartSource('dart:math'); |
108 _assertAddLibraryImport( | 98 _assertAddLibraryImport(<Source>[newLibrary1, newLibrary2], ''' |
109 <Source>[newLibrary1, newLibrary2], | |
110 ''' | |
111 import 'dart:async'; | 99 import 'dart:async'; |
112 import 'dart:collection'; | 100 import 'dart:collection'; |
113 import 'dart:html'; | 101 import 'dart:html'; |
114 import 'dart:math'; | 102 import 'dart:math'; |
115 '''); | 103 '''); |
116 } | 104 } |
117 | 105 |
118 test_addLibraryImports_dart_hasLibraryDirective() async { | 106 test_addLibraryImports_dart_hasLibraryDirective() async { |
119 await resolveTestUnit(''' | 107 await resolveTestUnit(''' |
120 library test; | 108 library test; |
121 | 109 |
122 class A {} | 110 class A {} |
123 '''); | 111 '''); |
124 Source newLibrary1 = _getDartSource('dart:math'); | 112 Source newLibrary1 = _getDartSource('dart:math'); |
125 Source newLibrary2 = _getDartSource('dart:async'); | 113 Source newLibrary2 = _getDartSource('dart:async'); |
126 _assertAddLibraryImport( | 114 _assertAddLibraryImport(<Source>[newLibrary1, newLibrary2], ''' |
127 <Source>[newLibrary1, newLibrary2], | |
128 ''' | |
129 library test; | 115 library test; |
130 | 116 |
131 import 'dart:async'; | 117 import 'dart:async'; |
132 import 'dart:math'; | 118 import 'dart:math'; |
133 | 119 |
134 class A {} | 120 class A {} |
135 '''); | 121 '''); |
136 } | 122 } |
137 | 123 |
138 test_addLibraryImports_dart_noDirectives_hasComment() async { | 124 test_addLibraryImports_dart_noDirectives_hasComment() async { |
139 await resolveTestUnit(''' | 125 await resolveTestUnit(''' |
140 /// Comment. | 126 /// Comment. |
141 | 127 |
142 class A {} | 128 class A {} |
143 '''); | 129 '''); |
144 Source newLibrary1 = _getDartSource('dart:math'); | 130 Source newLibrary1 = _getDartSource('dart:math'); |
145 Source newLibrary2 = _getDartSource('dart:async'); | 131 Source newLibrary2 = _getDartSource('dart:async'); |
146 _assertAddLibraryImport( | 132 _assertAddLibraryImport(<Source>[newLibrary1, newLibrary2], ''' |
147 <Source>[newLibrary1, newLibrary2], | |
148 ''' | |
149 /// Comment. | 133 /// Comment. |
150 | 134 |
151 import 'dart:async'; | 135 import 'dart:async'; |
152 import 'dart:math'; | 136 import 'dart:math'; |
153 | 137 |
154 class A {} | 138 class A {} |
155 '''); | 139 '''); |
156 } | 140 } |
157 | 141 |
158 test_addLibraryImports_dart_noDirectives_hasShebang() async { | 142 test_addLibraryImports_dart_noDirectives_hasShebang() async { |
159 await resolveTestUnit(''' | 143 await resolveTestUnit(''' |
160 #!/bin/dart | 144 #!/bin/dart |
161 | 145 |
162 class A {} | 146 class A {} |
163 '''); | 147 '''); |
164 Source newLibrary1 = _getDartSource('dart:math'); | 148 Source newLibrary1 = _getDartSource('dart:math'); |
165 Source newLibrary2 = _getDartSource('dart:async'); | 149 Source newLibrary2 = _getDartSource('dart:async'); |
166 _assertAddLibraryImport( | 150 _assertAddLibraryImport(<Source>[newLibrary1, newLibrary2], ''' |
167 <Source>[newLibrary1, newLibrary2], | |
168 ''' | |
169 #!/bin/dart | 151 #!/bin/dart |
170 | 152 |
171 import 'dart:async'; | 153 import 'dart:async'; |
172 import 'dart:math'; | 154 import 'dart:math'; |
173 | 155 |
174 class A {} | 156 class A {} |
175 '''); | 157 '''); |
176 } | 158 } |
177 | 159 |
178 test_addLibraryImports_dart_noDirectives_noShebang() async { | 160 test_addLibraryImports_dart_noDirectives_noShebang() async { |
179 await resolveTestUnit(''' | 161 await resolveTestUnit(''' |
180 class A {} | 162 class A {} |
181 '''); | 163 '''); |
182 Source newLibrary1 = _getDartSource('dart:math'); | 164 Source newLibrary1 = _getDartSource('dart:math'); |
183 Source newLibrary2 = _getDartSource('dart:async'); | 165 Source newLibrary2 = _getDartSource('dart:async'); |
184 _assertAddLibraryImport( | 166 _assertAddLibraryImport(<Source>[newLibrary1, newLibrary2], ''' |
185 <Source>[newLibrary1, newLibrary2], | |
186 ''' | |
187 import 'dart:async'; | 167 import 'dart:async'; |
188 import 'dart:math'; | 168 import 'dart:math'; |
189 | 169 |
190 class A {} | 170 class A {} |
191 '''); | 171 '''); |
192 } | 172 } |
193 | 173 |
194 test_addLibraryImports_package_hasDart_hasPackages_insertAfter() async { | 174 test_addLibraryImports_package_hasDart_hasPackages_insertAfter() async { |
195 addPackageSource('aaa', 'aaa.dart', ''); | 175 addPackageSource('aaa', 'aaa.dart', ''); |
196 await resolveTestUnit(''' | 176 await resolveTestUnit(''' |
197 import 'dart:async'; | 177 import 'dart:async'; |
198 | 178 |
199 import 'package:aaa/aaa.dart'; | 179 import 'package:aaa/aaa.dart'; |
200 '''); | 180 '''); |
201 Source newLibrary = _getSource('/lib/bbb.dart', 'package:bbb/bbb.dart'); | 181 Source newLibrary = _getSource('/lib/bbb.dart', 'package:bbb/bbb.dart'); |
202 _assertAddLibraryImport( | 182 _assertAddLibraryImport(<Source>[newLibrary], ''' |
203 <Source>[newLibrary], | |
204 ''' | |
205 import 'dart:async'; | 183 import 'dart:async'; |
206 | 184 |
207 import 'package:aaa/aaa.dart'; | 185 import 'package:aaa/aaa.dart'; |
208 import 'package:bbb/bbb.dart'; | 186 import 'package:bbb/bbb.dart'; |
209 '''); | 187 '''); |
210 } | 188 } |
211 | 189 |
212 test_addLibraryImports_package_hasDart_hasPackages_insertBefore() async { | 190 test_addLibraryImports_package_hasDart_hasPackages_insertBefore() async { |
213 addPackageSource('bbb', 'bbb.dart', ''); | 191 addPackageSource('bbb', 'bbb.dart', ''); |
214 await resolveTestUnit(''' | 192 await resolveTestUnit(''' |
215 import 'dart:async'; | 193 import 'dart:async'; |
216 | 194 |
217 import 'package:bbb/bbb.dart'; | 195 import 'package:bbb/bbb.dart'; |
218 '''); | 196 '''); |
219 Source newLibrary = _getSource('/lib/aaa.dart', 'package:aaa/aaa.dart'); | 197 Source newLibrary = _getSource('/lib/aaa.dart', 'package:aaa/aaa.dart'); |
220 _assertAddLibraryImport( | 198 _assertAddLibraryImport(<Source>[newLibrary], ''' |
221 <Source>[newLibrary], | |
222 ''' | |
223 import 'dart:async'; | 199 import 'dart:async'; |
224 | 200 |
225 import 'package:aaa/aaa.dart'; | 201 import 'package:aaa/aaa.dart'; |
226 import 'package:bbb/bbb.dart'; | 202 import 'package:bbb/bbb.dart'; |
227 '''); | 203 '''); |
228 } | 204 } |
229 | 205 |
230 test_addLibraryImports_package_hasImports_between() async { | 206 test_addLibraryImports_package_hasImports_between() async { |
231 addPackageSource('aaa', 'aaa.dart', ''); | 207 addPackageSource('aaa', 'aaa.dart', ''); |
232 addPackageSource('ddd', 'ddd.dart', ''); | 208 addPackageSource('ddd', 'ddd.dart', ''); |
233 await resolveTestUnit(''' | 209 await resolveTestUnit(''' |
234 import 'package:aaa/aaa.dart'; | 210 import 'package:aaa/aaa.dart'; |
235 import 'package:ddd/ddd.dart'; | 211 import 'package:ddd/ddd.dart'; |
236 '''); | 212 '''); |
237 Source newLibrary1 = _getSource('/lib/bbb.dart', 'package:bbb/bbb.dart'); | 213 Source newLibrary1 = _getSource('/lib/bbb.dart', 'package:bbb/bbb.dart'); |
238 Source newLibrary2 = _getSource('/lib/ccc.dart', 'package:ccc/ccc.dart'); | 214 Source newLibrary2 = _getSource('/lib/ccc.dart', 'package:ccc/ccc.dart'); |
239 _assertAddLibraryImport( | 215 _assertAddLibraryImport(<Source>[newLibrary1, newLibrary2], ''' |
240 <Source>[newLibrary1, newLibrary2], | |
241 ''' | |
242 import 'package:aaa/aaa.dart'; | 216 import 'package:aaa/aaa.dart'; |
243 import 'package:bbb/bbb.dart'; | 217 import 'package:bbb/bbb.dart'; |
244 import 'package:ccc/ccc.dart'; | 218 import 'package:ccc/ccc.dart'; |
245 import 'package:ddd/ddd.dart'; | 219 import 'package:ddd/ddd.dart'; |
246 '''); | 220 '''); |
247 } | 221 } |
248 | 222 |
249 void _assertAddLibraryImport(List<Source> newLibraries, String expectedCode) { | 223 void _assertAddLibraryImport(List<Source> newLibraries, String expectedCode) { |
250 SourceChange change = new SourceChange(''); | 224 SourceChange change = new SourceChange(''); |
251 addLibraryImports(change, testLibraryElement, newLibraries.toSet()); | 225 addLibraryImports(change, testLibraryElement, newLibraries.toSet()); |
(...skipping 17 matching lines...) Expand all Loading... |
269 @override | 243 @override |
270 final String fullName; | 244 final String fullName; |
271 | 245 |
272 @override | 246 @override |
273 final Uri uri; | 247 final Uri uri; |
274 | 248 |
275 _SourceMock(this.fullName, this.uri); | 249 _SourceMock(this.fullName, this.uri); |
276 | 250 |
277 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | 251 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
278 } | 252 } |
OLD | NEW |