1import unittest 2 3from cachetools import MRUCache 4 5from . import CacheTestMixin 6 7 8class MRUCacheTest(unittest.TestCase, CacheTestMixin): 9 10 Cache = MRUCache 11 12 def test_evict__writes_only(self): 13 cache = MRUCache(maxsize=2) 14 15 cache[1] = 1 16 cache[2] = 2 17 cache[3] = 3 # Evicts 1 because nothing's been used yet 18 19 assert len(cache) == 2 20 assert 1 not in cache, "Wrong key was evicted. Should have been '1'." 21 assert 2 in cache 22 assert 3 in cache 23 24 def test_evict__with_access(self): 25 cache = MRUCache(maxsize=2) 26 27 cache[1] = 1 28 cache[2] = 2 29 cache[1] 30 cache[2] 31 cache[3] = 3 # Evicts 2 32 assert 2 not in cache, "Wrong key was evicted. Should have been '2'." 33 assert 1 in cache 34 assert 3 in cache 35 36 def test_evict__with_delete(self): 37 cache = MRUCache(maxsize=2) 38 39 cache[1] = 1 40 cache[2] = 2 41 del cache[2] 42 cache[3] = 3 # Doesn't evict anything because we just deleted 2 43 44 assert 2 not in cache 45 assert 1 in cache 46 47 cache[4] = 4 # Should evict 1 as we just accessed it with __contains__ 48 assert 1 not in cache 49 assert 3 in cache 50 assert 4 in cache 51