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

Side by Side Diff: pkg/analyzer/test/src/dart/analysis/file_byte_store_test.dart

Issue 2492933002: Evict from FileByteStore by the total cache size in bytes. (Closed)
Patch Set: Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 import 'package:analyzer/file_system/file_system.dart';
6 import 'package:analyzer/file_system/memory_file_system.dart';
7 import 'package:analyzer/src/dart/analysis/file_byte_store.dart';
8 import 'package:test/test.dart';
9 import 'package:test_reflective_loader/test_reflective_loader.dart';
10
11 main() {
12 defineReflectiveSuite(() {
13 defineReflectiveTests(FileByteStoreTest);
14 });
15 }
16
17 @reflectiveTest
18 class FileByteStoreTest {
19 final MemoryResourceProvider provider = new MemoryResourceProvider();
20 Folder folder;
21 FileByteStore store;
22
23 void setUp() {
24 folder = provider.newFolder('/my/cache');
25 }
26
27 test_evict_afterGet() {
28 store = new FileByteStore(folder, '__temp', 100);
29
30 store.put('1', _b(40));
31 store.put('2', _b(50));
32 store.get('1');
33
34 store.put('3', _b(30));
35 _assertExists('1', 40);
36 _assertNotExists('2');
37 _assertExists('3', 30);
38 }
39
40 test_evict_first() {
41 store = new FileByteStore(folder, '__temp', 100);
42
43 store.put('1', _b(40));
44 store.put('2', _b(50));
45 _assertExists('1', 40);
46 _assertExists('2', 50);
47
48 store.put('3', _b(30));
49 _assertNotExists('1');
50 _assertExists('2', 50);
51 _assertExists('3', 30);
52 }
53
54 test_evict_firstAndSecond() {
55 store = new FileByteStore(folder, '__temp', 100);
56
57 store.put('1', _b(10));
58 store.put('2', _b(80));
59 _assertExists('1', 10);
60 _assertExists('2', 80);
61
62 store.put('3', _b(30));
63 _assertNotExists('1');
64 _assertNotExists('2');
65 _assertExists('3', 30);
66 }
67
68 test_evict_preExisting() {
69 folder.getChildAssumingFile('1').writeAsBytesSync(_b(40));
70 folder.getChildAssumingFile('2').writeAsBytesSync(_b(50));
71 store = new FileByteStore(folder, '__temp', 100);
72
73 // Access '1', so now the queue looks [2, 1].
74 store.get('1');
75
76 // 40 + 50 + 30 > 100
77 // So, '2' is removed.
78 store.put('3', _b(30));
79 _assertExists('1', 40);
80 _assertNotExists('2');
81 _assertExists('3', 30);
82 }
83
84 test_get_null() {
85 store = new FileByteStore(folder, '__temp', 1 << 10);
86 List<int> bytes = store.get('foo');
87 expect(bytes, isNull);
88 }
89
90 test_put_get() {
91 store = new FileByteStore(folder, '__temp', 1 << 10);
92 List<int> bytes = [0, 1, 2, 3, 4];
93 store.put('foo', bytes);
94 expect(store.get('foo'), bytes);
95 }
96
97 void _assertExists(String key, int length) {
98 expect(folder.getChildAssumingFile(key).exists, isTrue);
99 expect(store.get(key), hasLength(length));
100 }
101
102 void _assertNotExists(String key) {
103 expect(folder.getChildAssumingFile(key).exists, isFalse);
104 expect(store.get(key), isNull);
105 }
106
107 static List<int> _b(int length) {
Brian Wilkerson 2016/11/10 22:12:04 Really ?!? If we can't just write "new List<int>",
108 return new List<int>(length);
109 }
110 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698