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

Unified Diff: pkg/analyzer/test/src/context/cache_test.dart

Issue 1211993004: Dispose private cache partition on AnalysisContext.dispose(). (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 6 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
« no previous file with comments | « pkg/analyzer/lib/src/context/context.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/test/src/context/cache_test.dart
diff --git a/pkg/analyzer/test/src/context/cache_test.dart b/pkg/analyzer/test/src/context/cache_test.dart
index 2a3952aa69c91bf3275727ce6d466a95e37489be..c6d9254a8d21b6f35e5a3d795463b0cd15b3b651 100644
--- a/pkg/analyzer/test/src/context/cache_test.dart
+++ b/pkg/analyzer/test/src/context/cache_test.dart
@@ -237,6 +237,27 @@ class AnalysisCacheTest extends AbstractCacheTest {
@reflectiveTest
class CacheEntryTest extends AbstractCacheTest {
+ test_dispose() {
+ ResultDescriptor descriptor1 = new ResultDescriptor('result1', -1);
+ ResultDescriptor descriptor2 = new ResultDescriptor('result2', -2);
+ AnalysisTarget target1 = new TestSource('1.dart');
+ AnalysisTarget target2 = new TestSource('2.dart');
+ TargetedResult result1 = new TargetedResult(target1, descriptor1);
+ TargetedResult result2 = new TargetedResult(target2, descriptor2);
+ CacheEntry entry1 = new CacheEntry(target1);
+ CacheEntry entry2 = new CacheEntry(target2);
+ cache.put(entry1);
+ cache.put(entry2);
+ entry1.setValue(descriptor1, 1, TargetedResult.EMPTY_LIST);
+ entry2.setValue(descriptor2, 2, <TargetedResult>[result1]);
+ // target2 is listed as dependent in target1
+ expect(
+ entry1.getResultData(descriptor1).dependentResults, contains(result2));
+ // dispose entry2, result2 is removed from result1
+ entry2.dispose();
+ expect(entry1.getResultData(descriptor1).dependentResults, isEmpty);
+ }
+
test_explicitlyAdded() {
AnalysisTarget target = new TestSource();
CacheEntry entry = new CacheEntry(target);
@@ -983,6 +1004,37 @@ class UniversalCachePartitionTest extends CachePartitionTest {
return new UniversalCachePartition(null);
}
+ test_dispose() {
+ InternalAnalysisContext context = new _InternalAnalysisContextMock();
+ CachePartition partition1 = new UniversalCachePartition(context);
+ CachePartition partition2 = new UniversalCachePartition(context);
+ AnalysisCache cache = new AnalysisCache([partition1, partition2]);
+ when(context.analysisCache).thenReturn(cache);
+ // configure
+ // prepare entries
+ ResultDescriptor descriptor1 = new ResultDescriptor('result1', -1);
+ ResultDescriptor descriptor2 = new ResultDescriptor('result2', -2);
+ AnalysisTarget target1 = new TestSource('1.dart');
+ AnalysisTarget target2 = new TestSource('2.dart');
+ TargetedResult result1 = new TargetedResult(target1, descriptor1);
+ TargetedResult result2 = new TargetedResult(target2, descriptor2);
+ CacheEntry entry1 = new CacheEntry(target1);
+ CacheEntry entry2 = new CacheEntry(target2);
+ partition1.put(entry1);
+ partition2.put(entry2);
+ entry1.setValue(descriptor1, 1, TargetedResult.EMPTY_LIST);
+ entry2.setValue(descriptor2, 2, <TargetedResult>[result1]);
+ // target2 is listed as dependent in target1
+ expect(
+ entry1.getResultData(descriptor1).dependentResults, contains(result2));
+ // dispose
+ partition2.dispose();
+ expect(partition1.get(target1), same(entry1));
+ expect(partition2.get(target2), isNull);
+ // result2 is removed from result1
+ expect(entry1.getResultData(descriptor1).dependentResults, isEmpty);
+ }
+
void test_contains() {
UniversalCachePartition partition = new UniversalCachePartition(null);
TestSource source = new TestSource();
« no previous file with comments | « pkg/analyzer/lib/src/context/context.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698