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:analyzer/src/context/cache.dart'; | 5 import 'package:analyzer/src/context/cache.dart'; |
6 import 'package:analyzer/src/generated/engine.dart'; | 6 import 'package:analyzer/src/generated/engine.dart'; |
7 import 'package:analyzer/src/generated/source.dart'; | 7 import 'package:analyzer/src/generated/source.dart'; |
8 import 'package:analyzer/src/summary/idl.dart'; | 8 import 'package:analyzer/src/summary/idl.dart'; |
9 import 'package:analyzer/src/summary/package_bundle_reader.dart'; | 9 import 'package:analyzer/src/summary/package_bundle_reader.dart'; |
10 import 'package:analyzer/src/task/dart.dart'; | 10 import 'package:analyzer/src/task/dart.dart'; |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 | 146 |
147 test_compute_SOURCE_KIND_partSource() { | 147 test_compute_SOURCE_KIND_partSource() { |
148 bool success = provider.compute(entry2, SOURCE_KIND); | 148 bool success = provider.compute(entry2, SOURCE_KIND); |
149 expect(success, isTrue); | 149 expect(success, isTrue); |
150 expect(entry2.getValue(SOURCE_KIND), SourceKind.PART); | 150 expect(entry2.getValue(SOURCE_KIND), SourceKind.PART); |
151 } | 151 } |
152 } | 152 } |
153 | 153 |
154 @reflectiveTest | 154 @reflectiveTest |
155 class SummaryDataStoreTest { | 155 class SummaryDataStoreTest { |
156 SummaryDataStore dataStore = new SummaryDataStore(<String>[], | 156 SummaryDataStore dataStore = |
157 recordDependencyInfo: true, disallowOverlappingSummaries: true); | 157 new SummaryDataStore(<String>[], disallowOverlappingSummaries: true); |
158 | 158 |
159 PackageBundle bundle1 = new _PackageBundleMock(); | 159 PackageBundle bundle1 = new _PackageBundleMock(); |
160 PackageBundle bundle2 = new _PackageBundleMock(); | 160 PackageBundle bundle2 = new _PackageBundleMock(); |
161 UnlinkedUnit unlinkedUnit11 = new _UnlinkedUnitMock(); | 161 UnlinkedUnit unlinkedUnit11 = new _UnlinkedUnitMock(); |
162 UnlinkedUnit unlinkedUnit12 = new _UnlinkedUnitMock(); | 162 UnlinkedUnit unlinkedUnit12 = new _UnlinkedUnitMock(); |
163 UnlinkedUnit unlinkedUnit21 = new _UnlinkedUnitMock(); | 163 UnlinkedUnit unlinkedUnit21 = new _UnlinkedUnitMock(); |
164 LinkedLibrary linkedLibrary1 = new _LinkedLibraryMock(); | 164 LinkedLibrary linkedLibrary1 = new _LinkedLibraryMock(); |
165 LinkedLibrary linkedLibrary2 = new _LinkedLibraryMock(); | 165 LinkedLibrary linkedLibrary2 = new _LinkedLibraryMock(); |
166 | 166 |
167 void setUp() { | 167 void setUp() { |
168 _setupDataStore(dataStore); | 168 _setupDataStore(dataStore); |
169 } | 169 } |
170 | 170 |
171 test_addBundle() { | 171 test_addBundle() { |
172 expect(dataStore.bundles, unorderedEquals([bundle1, bundle2])); | 172 expect(dataStore.bundles, unorderedEquals([bundle1, bundle2])); |
173 expect(dataStore.dependencies[0].summaryPath, '/p1.ds'); | |
174 expect(dataStore.dependencies[0].apiSignature, 'signature1'); | |
175 expect(dataStore.dependencies[0].includedPackageNames, ['p1']); | |
176 expect(dataStore.dependencies[0].includesFileUris, false); | |
177 expect(dataStore.dependencies[0].includesDartUris, false); | |
178 expect(dataStore.dependencies[1].summaryPath, '/p2.ds'); | |
179 expect(dataStore.dependencies[1].apiSignature, 'signature2'); | |
180 expect(dataStore.dependencies[1].includedPackageNames, ['p2']); | |
181 expect(dataStore.dependencies[1].includesFileUris, false); | |
182 expect(dataStore.dependencies[1].includesDartUris, false); | |
183 expect(dataStore.uriToSummaryPath, | 173 expect(dataStore.uriToSummaryPath, |
184 containsPair('package:p1/u1.dart', '/p1.ds')); | 174 containsPair('package:p1/u1.dart', '/p1.ds')); |
185 // unlinkedMap | 175 // unlinkedMap |
186 expect(dataStore.unlinkedMap, hasLength(3)); | 176 expect(dataStore.unlinkedMap, hasLength(3)); |
187 expect(dataStore.unlinkedMap, | 177 expect(dataStore.unlinkedMap, |
188 containsPair('package:p1/u1.dart', unlinkedUnit11)); | 178 containsPair('package:p1/u1.dart', unlinkedUnit11)); |
189 expect(dataStore.unlinkedMap, | 179 expect(dataStore.unlinkedMap, |
190 containsPair('package:p1/u2.dart', unlinkedUnit12)); | 180 containsPair('package:p1/u2.dart', unlinkedUnit12)); |
191 expect(dataStore.unlinkedMap, | 181 expect(dataStore.unlinkedMap, |
192 containsPair('package:p2/u1.dart', unlinkedUnit21)); | 182 containsPair('package:p2/u1.dart', unlinkedUnit21)); |
193 // linkedMap | 183 // linkedMap |
194 expect(dataStore.linkedMap, hasLength(2)); | 184 expect(dataStore.linkedMap, hasLength(2)); |
195 expect(dataStore.linkedMap, | 185 expect(dataStore.linkedMap, |
196 containsPair('package:p1/u1.dart', linkedLibrary1)); | 186 containsPair('package:p1/u1.dart', linkedLibrary1)); |
197 expect(dataStore.linkedMap, | 187 expect(dataStore.linkedMap, |
198 containsPair('package:p2/u1.dart', linkedLibrary2)); | 188 containsPair('package:p2/u1.dart', linkedLibrary2)); |
199 } | 189 } |
200 | 190 |
201 test_addBundle_dartUris() { | 191 test_addBundle_dartUris() { |
202 PackageBundle bundle = new _PackageBundleMock(); | 192 PackageBundle bundle = new _PackageBundleMock(); |
203 when(bundle.unlinkedUnitUris).thenReturn(<String>['dart:core']); | 193 when(bundle.unlinkedUnitUris).thenReturn(<String>['dart:core']); |
204 when(bundle.unlinkedUnits).thenReturn(<UnlinkedUnit>[unlinkedUnit11]); | 194 when(bundle.unlinkedUnits).thenReturn(<UnlinkedUnit>[unlinkedUnit11]); |
205 when(bundle.linkedLibraryUris).thenReturn(<String>['dart:core']); | 195 when(bundle.linkedLibraryUris).thenReturn(<String>['dart:core']); |
206 when(bundle.linkedLibraries).thenReturn(<LinkedLibrary>[linkedLibrary1]); | 196 when(bundle.linkedLibraries).thenReturn(<LinkedLibrary>[linkedLibrary1]); |
207 when(bundle.apiSignature).thenReturn('signature'); | 197 when(bundle.apiSignature).thenReturn('signature'); |
208 dataStore.addBundle('/p3.ds', bundle); | 198 dataStore.addBundle('/p3.ds', bundle); |
209 expect(dataStore.dependencies.last.includedPackageNames, []); | |
210 expect(dataStore.dependencies.last.includesFileUris, false); | |
211 expect(dataStore.dependencies.last.includesDartUris, true); | |
212 } | 199 } |
213 | 200 |
214 test_addBundle_fileUris() { | 201 test_addBundle_fileUris() { |
215 PackageBundle bundle = new _PackageBundleMock(); | 202 PackageBundle bundle = new _PackageBundleMock(); |
216 when(bundle.unlinkedUnitUris).thenReturn(<String>['file:/foo.dart']); | 203 when(bundle.unlinkedUnitUris).thenReturn(<String>['file:/foo.dart']); |
217 when(bundle.unlinkedUnits).thenReturn(<UnlinkedUnit>[unlinkedUnit11]); | 204 when(bundle.unlinkedUnits).thenReturn(<UnlinkedUnit>[unlinkedUnit11]); |
218 when(bundle.linkedLibraryUris).thenReturn(<String>['file:/foo.dart']); | 205 when(bundle.linkedLibraryUris).thenReturn(<String>['file:/foo.dart']); |
219 when(bundle.linkedLibraries).thenReturn(<LinkedLibrary>[linkedLibrary1]); | 206 when(bundle.linkedLibraries).thenReturn(<LinkedLibrary>[linkedLibrary1]); |
220 when(bundle.apiSignature).thenReturn('signature'); | 207 when(bundle.apiSignature).thenReturn('signature'); |
221 dataStore.addBundle('/p3.ds', bundle); | 208 dataStore.addBundle('/p3.ds', bundle); |
222 expect(dataStore.dependencies.last.includedPackageNames, []); | |
223 expect(dataStore.dependencies.last.includesFileUris, true); | |
224 expect(dataStore.dependencies.last.includesDartUris, false); | |
225 } | 209 } |
226 | 210 |
227 test_addBundle_multiProject() { | 211 test_addBundle_multiProject() { |
228 PackageBundle bundle = new _PackageBundleMock(); | 212 PackageBundle bundle = new _PackageBundleMock(); |
229 when(bundle.unlinkedUnitUris) | 213 when(bundle.unlinkedUnitUris) |
230 .thenReturn(<String>['package:p2/u1.dart', 'package:p1/u1.dart']); | 214 .thenReturn(<String>['package:p2/u1.dart', 'package:p1/u1.dart']); |
231 when(bundle.unlinkedUnits) | 215 when(bundle.unlinkedUnits) |
232 .thenReturn(<UnlinkedUnit>[unlinkedUnit21, unlinkedUnit11]); | 216 .thenReturn(<UnlinkedUnit>[unlinkedUnit21, unlinkedUnit11]); |
233 when(bundle.linkedLibraryUris) | 217 when(bundle.linkedLibraryUris) |
234 .thenReturn(<String>['package:p2/u1.dart', 'package:p1/u1.dart']); | 218 .thenReturn(<String>['package:p2/u1.dart', 'package:p1/u1.dart']); |
235 when(bundle.linkedLibraries) | 219 when(bundle.linkedLibraries) |
236 .thenReturn(<LinkedLibrary>[linkedLibrary2, linkedLibrary1]); | 220 .thenReturn(<LinkedLibrary>[linkedLibrary2, linkedLibrary1]); |
237 when(bundle.apiSignature).thenReturn('signature'); | 221 when(bundle.apiSignature).thenReturn('signature'); |
238 // p3 conflicts (overlaps) with existing summaries. | 222 // p3 conflicts (overlaps) with existing summaries. |
239 expect(() => dataStore.addBundle('/p3.ds', bundle), | 223 expect(() => dataStore.addBundle('/p3.ds', bundle), |
240 throwsA(isConflictingSummaryException)); | 224 throwsA(isConflictingSummaryException)); |
241 expect(dataStore.dependencies.last.includedPackageNames, ['p1', 'p2']); | |
242 } | 225 } |
243 | 226 |
244 test_addBundle_multiProjectOverlap() { | 227 test_addBundle_multiProjectOverlap() { |
245 SummaryDataStore dataStore2 = new SummaryDataStore(<String>[], | 228 SummaryDataStore dataStore2 = |
246 recordDependencyInfo: true, disallowOverlappingSummaries: false); | 229 new SummaryDataStore(<String>[], disallowOverlappingSummaries: false); |
247 _setupDataStore(dataStore2); | 230 _setupDataStore(dataStore2); |
248 | 231 |
249 PackageBundle bundle = new _PackageBundleMock(); | 232 PackageBundle bundle = new _PackageBundleMock(); |
250 when(bundle.unlinkedUnitUris) | 233 when(bundle.unlinkedUnitUris) |
251 .thenReturn(<String>['package:p2/u1.dart', 'package:p1/u1.dart']); | 234 .thenReturn(<String>['package:p2/u1.dart', 'package:p1/u1.dart']); |
252 when(bundle.unlinkedUnits) | 235 when(bundle.unlinkedUnits) |
253 .thenReturn(<UnlinkedUnit>[unlinkedUnit21, unlinkedUnit11]); | 236 .thenReturn(<UnlinkedUnit>[unlinkedUnit21, unlinkedUnit11]); |
254 when(bundle.linkedLibraryUris) | 237 when(bundle.linkedLibraryUris) |
255 .thenReturn(<String>['package:p2/u1.dart', 'package:p1/u1.dart']); | 238 .thenReturn(<String>['package:p2/u1.dart', 'package:p1/u1.dart']); |
256 when(bundle.linkedLibraries) | 239 when(bundle.linkedLibraries) |
257 .thenReturn(<LinkedLibrary>[linkedLibrary2, linkedLibrary1]); | 240 .thenReturn(<LinkedLibrary>[linkedLibrary2, linkedLibrary1]); |
258 when(bundle.apiSignature).thenReturn('signature'); | 241 when(bundle.apiSignature).thenReturn('signature'); |
259 // p3 conflicts (overlaps) with existing summaries, but now allowed. | 242 // p3 conflicts (overlaps) with existing summaries, but now allowed. |
260 dataStore2.addBundle('/p3.ds', bundle); | 243 dataStore2.addBundle('/p3.ds', bundle); |
261 expect(dataStore2.dependencies.last.includedPackageNames, ['p1', 'p2']); | |
262 } | 244 } |
263 | 245 |
264 test_getContainingLibraryUris_libraryUri() { | 246 test_getContainingLibraryUris_libraryUri() { |
265 String partUri = 'package:p1/u1.dart'; | 247 String partUri = 'package:p1/u1.dart'; |
266 List<String> uris = dataStore.getContainingLibraryUris(partUri); | 248 List<String> uris = dataStore.getContainingLibraryUris(partUri); |
267 expect(uris, unorderedEquals([partUri])); | 249 expect(uris, unorderedEquals([partUri])); |
268 } | 250 } |
269 | 251 |
270 test_getContainingLibraryUris_partUri() { | 252 test_getContainingLibraryUris_partUri() { |
271 String partUri = 'package:p1/u2.dart'; | 253 String partUri = 'package:p1/u2.dart'; |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
346 @override | 328 @override |
347 bool hasResultsForSource(Source source) { | 329 bool hasResultsForSource(Source source) { |
348 return sourcesWithResults.contains(source); | 330 return sourcesWithResults.contains(source); |
349 } | 331 } |
350 } | 332 } |
351 | 333 |
352 class _UnlinkedPublicNamespaceMock extends Mock | 334 class _UnlinkedPublicNamespaceMock extends Mock |
353 implements UnlinkedPublicNamespace {} | 335 implements UnlinkedPublicNamespace {} |
354 | 336 |
355 class _UnlinkedUnitMock extends Mock implements UnlinkedUnit {} | 337 class _UnlinkedUnitMock extends Mock implements UnlinkedUnit {} |
OLD | NEW |