Skip to content
This repository was archived by the owner on Feb 22, 2018. It is now read-only.

Commit 3e60863

Browse files
committed
feat(LRUCache): Support zero-length caches
1 parent 1292aac commit 3e60863

File tree

3 files changed

+11
-5
lines changed

3 files changed

+11
-5
lines changed

lib/core/cache.dart

+3-4
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ class LruCache<K, V> extends Cache<K, V> {
8282
int _misses = 0;
8383

8484
LruCache({int capacity}) {
85-
this._capacity = (capacity == null) ? 0 : capacity;
85+
this._capacity = capacity;
8686
}
8787

8888
V get(K key) {
@@ -101,13 +101,12 @@ class LruCache<K, V> extends Cache<K, V> {
101101
V put(K key, V value) {
102102
// idempotent. needed to refresh an existing key.
103103
_entries.remove(key);
104-
// _capacity always > 0 but might not be true in some future.
105-
if (_capacity > 0 && _capacity == _entries.length) {
104+
_entries[key] = value;
105+
if (_capacity != null && _capacity < _entries.length) {
106106
// drop oldest entry when at capacity
107107
// _entries.keys.first is fairly cheap - 2 new calls.
108108
_entries.remove(_entries.keys.first);
109109
}
110-
_entries[key] = value;
111110
return value;
112111
}
113112

lib/core_dom/module_internal.dart

+2-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ class CoreDomModule extends Module {
4848
value(dom.Window, dom.window);
4949
value(ElementProbe, null);
5050

51-
factory(TemplateCache, (_) => new TemplateCache(capacity: 0));
51+
// Default to a unlimited-sized TemplateCache
52+
factory(TemplateCache, (_) => new TemplateCache());
5253
type(dom.NodeTreeSanitizer, implementedBy: NullTreeSanitizer);
5354

5455
type(TextMustache);

test/core/cache_spec.dart

+6
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,12 @@ void main() {
147147
expect(stats.hits).toEqual(2);
148148
expect(stats.misses).toEqual(1);
149149
}));
150+
151+
it('should hold nothing if capacity is zero', () {
152+
var cache = new LruCache<int, int>(capacity: 0);
153+
cache.put(1, 10);
154+
expect(cache.get(1)).toBeNull();
155+
});
150156
});
151157
});
152158
}

0 commit comments

Comments
 (0)