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

Unified Diff: pkg/analyzer/test/src/task/dart_work_manager_test.dart

Issue 1152773002: Manage 'libraries containing part' in DartWorkManager. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 7 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/analyzer/test/src/task/dart_work_manager_test.dart
diff --git a/pkg/analyzer/test/src/task/dart_work_manager_test.dart b/pkg/analyzer/test/src/task/dart_work_manager_test.dart
index 98720115e4434e6465df79ff8abf2e6b6ec20903..83168b23fe9a54a2e889d3bd07db1d0b7e8d275b 100644
--- a/pkg/analyzer/test/src/task/dart_work_manager_test.dart
+++ b/pkg/analyzer/test/src/task/dart_work_manager_test.dart
@@ -132,6 +132,86 @@ class DartWorkManagerTest {
expect_librarySourceQueue([source1, source3]);
}
+ void test_applyChange_updatePartsLibraries_changeLibrary() {
+ Source part1 = new TestSource('part1.dart');
+ Source part2 = new TestSource('part2.dart');
+ Source part3 = new TestSource('part3.dart');
+ Source library1 = new TestSource('library1.dart');
+ Source library2 = new TestSource('library2.dart');
+ manager.partLibrariesMap[part1] = [library1, library2];
+ manager.partLibrariesMap[part2] = [library2];
+ manager.partLibrariesMap[part3] = [library1];
+ manager.libraryPartsMap[library1] = [part1, part3];
+ manager.libraryPartsMap[library2] = [part1, part2];
+ // change library1
+ manager.applyChange([], [library1], []);
+ expect(manager.partLibrariesMap[part1], unorderedEquals([library2]));
+ expect(manager.partLibrariesMap[part2], unorderedEquals([library2]));
+ expect(manager.partLibrariesMap[part3], unorderedEquals([]));
+ expect(manager.libraryPartsMap[library1], isNull);
+ expect(manager.libraryPartsMap[library2], [part1, part2]);
+ }
+
+ void test_applyChange_updatePartsLibraries_changePart() {
+ Source part1 = new TestSource('part1.dart');
+ Source part2 = new TestSource('part2.dart');
+ Source part3 = new TestSource('part3.dart');
+ Source library1 = new TestSource('library1.dart');
+ Source library2 = new TestSource('library2.dart');
+ manager.partLibrariesMap[part1] = [library1, library2];
+ manager.partLibrariesMap[part2] = [library2];
+ manager.partLibrariesMap[part3] = [library1];
+ manager.libraryPartsMap[library1] = [part1, part3];
+ manager.libraryPartsMap[library2] = [part1, part2];
+ // change part1
+ manager.applyChange([], [part1], []);
+ expect(manager.partLibrariesMap[part1], isNull);
+ expect(manager.partLibrariesMap[part2], unorderedEquals([library2]));
+ expect(manager.partLibrariesMap[part3], unorderedEquals([library1]));
+ expect(manager.libraryPartsMap[library1], [part3]);
+ expect(manager.libraryPartsMap[library2], [part2]);
+ }
+
+ void test_applyChange_updatePartsLibraries_removeLibrary() {
+ Source part1 = new TestSource('part1.dart');
+ Source part2 = new TestSource('part2.dart');
+ Source part3 = new TestSource('part3.dart');
+ Source library1 = new TestSource('library1.dart');
+ Source library2 = new TestSource('library2.dart');
+ manager.partLibrariesMap[part1] = [library1, library2];
+ manager.partLibrariesMap[part2] = [library2];
+ manager.partLibrariesMap[part3] = [library1];
+ manager.libraryPartsMap[library1] = [part1, part3];
+ manager.libraryPartsMap[library2] = [part1, part2];
+ // remove library1
+ manager.applyChange([], [], [library1]);
+ expect(manager.partLibrariesMap[part1], unorderedEquals([library2]));
+ expect(manager.partLibrariesMap[part2], unorderedEquals([library2]));
+ expect(manager.partLibrariesMap[part3], unorderedEquals([]));
+ expect(manager.libraryPartsMap[library1], isNull);
+ expect(manager.libraryPartsMap[library2], [part1, part2]);
+ }
+
+ void test_applyChange_updatePartsLibraries_removePart() {
+ Source part1 = new TestSource('part1.dart');
+ Source part2 = new TestSource('part2.dart');
+ Source part3 = new TestSource('part3.dart');
+ Source library1 = new TestSource('library1.dart');
+ Source library2 = new TestSource('library2.dart');
+ manager.partLibrariesMap[part1] = [library1, library2];
+ manager.partLibrariesMap[part2] = [library2];
+ manager.partLibrariesMap[part3] = [library1];
+ manager.libraryPartsMap[library1] = [part1, part3];
+ manager.libraryPartsMap[library2] = [part1, part2];
+ // remove part1
+ manager.applyChange([], [], [part1]);
+ expect(manager.partLibrariesMap[part1], isNull);
+ expect(manager.partLibrariesMap[part2], unorderedEquals([library2]));
+ expect(manager.partLibrariesMap[part3], unorderedEquals([library1]));
+ expect(manager.libraryPartsMap[library1], [part3]);
+ expect(manager.libraryPartsMap[library2], [part2]);
+ }
+
void test_applyPriorityTargets_library() {
entry1.setValue(SOURCE_KIND, SourceKind.LIBRARY, []);
entry2.setValue(SOURCE_KIND, SourceKind.LIBRARY, []);
@@ -186,6 +266,24 @@ class DartWorkManagerTest {
expect(errorInfo.lineInfo, lineInfo);
}
+ void test_getLibrariesContainingPart() {
+ Source part1 = new TestSource('part1.dart');
+ Source part2 = new TestSource('part2.dart');
+ Source part3 = new TestSource('part3.dart');
+ Source library1 = new TestSource('library1.dart');
+ Source library2 = new TestSource('library2.dart');
+ manager.partLibrariesMap[part1] = [library1, library2];
+ manager.partLibrariesMap[part2] = [library2];
+ manager.libraryPartsMap[library1] = [part1];
+ manager.libraryPartsMap[library2] = [part1, part2];
+ // getLibrariesContainingPart
+ expect(manager.getLibrariesContainingPart(part1),
+ unorderedEquals([library1, library2]));
+ expect(
+ manager.getLibrariesContainingPart(part2), unorderedEquals([library2]));
+ expect(manager.getLibrariesContainingPart(part3), isEmpty);
+ }
+
void test_getNextResult_hasLibraries_firstIsError() {
entry1.setErrorState(caughtException, [LIBRARY_ERRORS_READY]);
manager.librarySourceQueue.addAll([source1, source2]);
@@ -346,6 +444,28 @@ class DartWorkManagerTest {
expect(notice.lineInfo, lineInfo);
}
+ void test_resultsComputed_includedParts() {
+ Source part1 = new TestSource('part1.dart');
+ Source part2 = new TestSource('part2.dart');
+ Source part3 = new TestSource('part3.dart');
+ Source library1 = new TestSource('library1.dart');
+ Source library2 = new TestSource('library2.dart');
+ // library1 parts
+ manager.resultsComputed(library1, {INCLUDED_PARTS: [part1, part2]});
+ expect(manager.partLibrariesMap[part1], [library1]);
+ expect(manager.partLibrariesMap[part2], [library1]);
+ expect(manager.partLibrariesMap[part3], isNull);
+ expect(manager.libraryPartsMap[library1], [part1, part2]);
+ expect(manager.libraryPartsMap[library2], isNull);
+ // library2 parts
+ manager.resultsComputed(library2, {INCLUDED_PARTS: [part2, part3]});
+ expect(manager.partLibrariesMap[part1], [library1]);
+ expect(manager.partLibrariesMap[part2], [library1, library2]);
+ expect(manager.partLibrariesMap[part3], [library2]);
+ expect(manager.libraryPartsMap[library1], [part1, part2]);
+ expect(manager.libraryPartsMap[library2], [part2, part3]);
+ }
+
void test_resultsComputed_noSourceKind() {
manager.unknownSourceQueue.addAll([source1, source2]);
manager.resultsComputed(source1, {});

Powered by Google App Engine
This is Rietveld 408576698