OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 library analyzer.test.src.context.cache_test; | 5 library analyzer.test.src.context.cache_test; |
6 | 6 |
7 import 'package:analyzer/file_system/file_system.dart'; | 7 import 'package:analyzer/file_system/file_system.dart'; |
8 import 'package:analyzer/file_system/memory_file_system.dart'; | 8 import 'package:analyzer/file_system/memory_file_system.dart'; |
9 import 'package:analyzer/file_system/physical_file_system.dart'; | 9 import 'package:analyzer/file_system/physical_file_system.dart'; |
10 import 'package:analyzer/source/package_map_resolver.dart'; | 10 import 'package:analyzer/source/package_map_resolver.dart'; |
(...skipping 26 matching lines...) Expand all Loading... |
37 CachePartition partition = new UniversalCachePartition(context); | 37 CachePartition partition = new UniversalCachePartition(context); |
38 return new AnalysisCache(<CachePartition>[partition]); | 38 return new AnalysisCache(<CachePartition>[partition]); |
39 } | 39 } |
40 | 40 |
41 class AbstractCacheTest { | 41 class AbstractCacheTest { |
42 InternalAnalysisContext context; | 42 InternalAnalysisContext context; |
43 AnalysisCache cache; | 43 AnalysisCache cache; |
44 | 44 |
45 void setUp() { | 45 void setUp() { |
46 context = new _InternalAnalysisContextMock(); | 46 context = new _InternalAnalysisContextMock(); |
47 when(context.priorityTargets).thenReturn([]); | 47 when(context.prioritySources).thenReturn([]); |
48 cache = createCache(context: context); | 48 cache = createCache(context: context); |
49 when(context.analysisCache).thenReturn(cache); | 49 when(context.analysisCache).thenReturn(cache); |
50 } | 50 } |
51 } | 51 } |
52 | 52 |
53 @reflectiveTest | 53 @reflectiveTest |
54 class AnalysisCacheTest extends AbstractCacheTest { | 54 class AnalysisCacheTest extends AbstractCacheTest { |
55 void test_creation() { | 55 void test_creation() { |
56 expect(cache, isNotNull); | 56 expect(cache, isNotNull); |
57 } | 57 } |
(...skipping 706 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
764 expect(entry.getState(descriptor2), CacheState.VALID); | 764 expect(entry.getState(descriptor2), CacheState.VALID); |
765 } | 765 } |
766 { | 766 { |
767 entry.setValue(descriptor3, 3, TargetedResult.EMPTY_LIST); | 767 entry.setValue(descriptor3, 3, TargetedResult.EMPTY_LIST); |
768 expect(entry.getState(descriptor1), CacheState.FLUSHED); | 768 expect(entry.getState(descriptor1), CacheState.FLUSHED); |
769 expect(entry.getState(descriptor2), CacheState.VALID); | 769 expect(entry.getState(descriptor2), CacheState.VALID); |
770 expect(entry.getState(descriptor3), CacheState.VALID); | 770 expect(entry.getState(descriptor3), CacheState.VALID); |
771 } | 771 } |
772 } | 772 } |
773 | 773 |
| 774 test_setValue_flushResults_keepForPrioritySources() { |
| 775 ResultCachingPolicy cachingPolicy = new SimpleResultCachingPolicy(2, 2); |
| 776 ResultDescriptor newResult(String name) => |
| 777 new ResultDescriptor(name, null, cachingPolicy: cachingPolicy); |
| 778 ResultDescriptor descriptor1 = newResult('result1'); |
| 779 ResultDescriptor descriptor2 = newResult('result2'); |
| 780 ResultDescriptor descriptor3 = newResult('result3'); |
| 781 TestSource source1 = new TestSource('/a.dart'); |
| 782 TestSource source2 = new TestSource('/b.dart'); |
| 783 TestSource source3 = new TestSource('/c.dart'); |
| 784 AnalysisTarget target1 = |
| 785 new _TestAnalysisTarget(librarySource: source1, source: source1); |
| 786 AnalysisTarget target2 = |
| 787 new _TestAnalysisTarget(librarySource: source2, source: source2); |
| 788 AnalysisTarget target3 = |
| 789 new _TestAnalysisTarget(librarySource: source3, source: source3); |
| 790 CacheEntry entry1 = new CacheEntry(target1); |
| 791 CacheEntry entry2 = new CacheEntry(target2); |
| 792 CacheEntry entry3 = new CacheEntry(target3); |
| 793 cache.put(entry1); |
| 794 cache.put(entry2); |
| 795 cache.put(entry3); |
| 796 |
| 797 // Set two results. |
| 798 entry1.setValue(descriptor1, 1, TargetedResult.EMPTY_LIST); |
| 799 entry2.setValue(descriptor2, 2, TargetedResult.EMPTY_LIST); |
| 800 expect(entry1.getState(descriptor1), CacheState.VALID); |
| 801 expect(entry2.getState(descriptor2), CacheState.VALID); |
| 802 |
| 803 // Make source1 priority, so result2 is flushed instead. |
| 804 when(context.prioritySources).thenReturn([source1]); |
| 805 entry3.setValue(descriptor3, 3, TargetedResult.EMPTY_LIST); |
| 806 expect(entry1.getState(descriptor1), CacheState.VALID); |
| 807 expect(entry2.getState(descriptor2), CacheState.FLUSHED); |
| 808 expect(entry3.getState(descriptor3), CacheState.VALID); |
| 809 } |
| 810 |
774 test_setValue_keepDependent() { | 811 test_setValue_keepDependent() { |
775 AnalysisTarget target = new TestSource(); | 812 AnalysisTarget target = new TestSource(); |
776 CacheEntry entry = new CacheEntry(target); | 813 CacheEntry entry = new CacheEntry(target); |
777 cache.put(entry); | 814 cache.put(entry); |
778 ResultDescriptor result1 = new ResultDescriptor('result1', -1); | 815 ResultDescriptor result1 = new ResultDescriptor('result1', -1); |
779 ResultDescriptor result2 = new ResultDescriptor('result2', -2); | 816 ResultDescriptor result2 = new ResultDescriptor('result2', -2); |
780 // set results, all of them are VALID | 817 // set results, all of them are VALID |
781 entry.setValue(result1, 111, TargetedResult.EMPTY_LIST); | 818 entry.setValue(result1, 111, TargetedResult.EMPTY_LIST); |
782 entry.setValue(result2, 222, [new TargetedResult(target, result1)]); | 819 entry.setValue(result2, 222, [new TargetedResult(target, result1)]); |
783 expect(entry.getState(result1), CacheState.VALID); | 820 expect(entry.getState(result1), CacheState.VALID); |
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1259 DeltaResult validate(InternalAnalysisContext context, AnalysisTarget target, | 1296 DeltaResult validate(InternalAnalysisContext context, AnalysisTarget target, |
1260 ResultDescriptor descriptor, Object value) { | 1297 ResultDescriptor descriptor, Object value) { |
1261 if (descriptor == keepDescriptor) { | 1298 if (descriptor == keepDescriptor) { |
1262 return DeltaResult.KEEP_CONTINUE; | 1299 return DeltaResult.KEEP_CONTINUE; |
1263 } | 1300 } |
1264 return DeltaResult.INVALIDATE; | 1301 return DeltaResult.INVALIDATE; |
1265 } | 1302 } |
1266 } | 1303 } |
1267 | 1304 |
1268 class _TestAnalysisTarget implements AnalysisTarget { | 1305 class _TestAnalysisTarget implements AnalysisTarget { |
1269 @override | 1306 final Source librarySource; |
1270 Source get librarySource => null; | 1307 final Source source; |
1271 | 1308 _TestAnalysisTarget({this.librarySource, this.source}); |
1272 @override | |
1273 Source get source => null; | |
1274 } | 1309 } |
OLD | NEW |