diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_cache.py | 36 | ||||
-rw-r--r-- | tests/test_lfucache.py | 22 | ||||
-rw-r--r-- | tests/test_lrucache.py | 23 | ||||
-rw-r--r-- | tests/test_rrcache.py | 22 |
4 files changed, 85 insertions, 18 deletions
diff --git a/tests/test_cache.py b/tests/test_cache.py index 5c32f2b..e2a58e6 100644 --- a/tests/test_cache.py +++ b/tests/test_cache.py @@ -4,38 +4,38 @@ import cachetools import collections -@cachetools.cache -class DictCache(dict): - pass - - -@cachetools.cache -class OrderedDictCache(collections.OrderedDict): - pass - - class CacheTest(unittest.TestCase): def test_dict_cache(self): - cache = DictCache(maxsize=2) + cache = cachetools._Cache({'a': 1, 'b': 2}, maxsize=2) + + self.assertEqual(len(cache), 2) + self.assertEqual(cache['a'], 1) + self.assertEqual(cache['b'], 2) - cache['a'] = 1 - cache['b'] = 2 cache['c'] = 3 self.assertEqual(len(cache), 2) - self.assertTrue('a' in cache or ('b' in cache and 'c' in cache)) - self.assertTrue('b' in cache or ('a' in cache and 'c' in cache)) - self.assertTrue('c' in cache or ('a' in cache and 'b' in cache)) + self.assertTrue('a' in cache or 'b' in cache) + self.assertEqual(cache['c'], 3) + + cache.maxsize = 1 + + self.assertEqual(len(cache), 1) + self.assertTrue('a' in cache or 'b' in cache or 'c' in cache) def test_ordered_dict_cache(self): - cache = OrderedDictCache(maxsize=2) + cache = cachetools._Cache(collections.OrderedDict(), maxsize=2) cache['a'] = 1 cache['b'] = 2 cache['c'] = 3 self.assertEqual(len(cache), 2) - self.assertNotIn('a', cache) self.assertEqual(cache['b'], 2) self.assertEqual(cache['c'], 3) + + cache.maxsize = 1 + + self.assertEqual(len(cache), 1) + self.assertEqual(cache['c'], 3) diff --git a/tests/test_lfucache.py b/tests/test_lfucache.py index d414e20..cfdf0ec 100644 --- a/tests/test_lfucache.py +++ b/tests/test_lfucache.py @@ -33,6 +33,28 @@ class LFUCacheTest(unittest.TestCase): self.assertEqual(cache['d'], 4) self.assertEqual(cache['a'], 1) + def test_getsizeof(self): + cache = LFUCache(maxsize=3, getsizeof=lambda x: x) + + cache['a'] = 1 + cache['b'] = 2 + + self.assertEqual(len(cache), 2) + self.assertEqual(cache['a'], 1) + self.assertEqual(cache['b'], 2) + + cache['c'] = 3 + + self.assertEqual(len(cache), 1) + self.assertEqual(cache['c'], 3) + self.assertNotIn('a', cache) + self.assertNotIn('b', cache) + + with self.assertRaises(ValueError): + cache['d'] = 4 + self.assertEqual(len(cache), 1) + self.assertEqual(cache['c'], 3) + def test_decorator(self): self.assertEqual(cached(1), 1) self.assertEqual(cached.cache_info(), (0, 1, 2, 1)) diff --git a/tests/test_lrucache.py b/tests/test_lrucache.py index a4ceb6e..21cc798 100644 --- a/tests/test_lrucache.py +++ b/tests/test_lrucache.py @@ -40,6 +40,29 @@ class LRUCacheTest(unittest.TestCase): self.assertEqual(cache['e'], 5) self.assertNotIn('b', cache) + def test_getsizeof(self): + cache = LRUCache(maxsize=3, getsizeof=lambda x: x) + + cache['a'] = 1 + cache['b'] = 2 + + self.assertEqual(len(cache), 2) + self.assertEqual(cache['a'], 1) + self.assertEqual(cache['b'], 2) + + cache['c'] = 3 + + self.assertEqual(len(cache), 1) + self.assertEqual(cache['c'], 3) + self.assertNotIn('a', cache) + self.assertNotIn('b', cache) + + with self.assertRaises(ValueError): + cache['d'] = 4 + self.assertEqual(len(cache), 1) + self.assertEqual(cache['c'], 3) + + def test_decorator(self): self.assertEqual(cached.cache_info(), (0, 0, 2, 0)) self.assertEqual(cached(1), 1) diff --git a/tests/test_rrcache.py b/tests/test_rrcache.py index f8eb534..088eedf 100644 --- a/tests/test_rrcache.py +++ b/tests/test_rrcache.py @@ -27,6 +27,28 @@ class RRCacheTest(unittest.TestCase): self.assertTrue('b' in cache or ('a' in cache and 'c' in cache)) self.assertTrue('c' in cache or ('a' in cache and 'b' in cache)) + def test_getsizeof(self): + cache = RRCache(maxsize=3, getsizeof=lambda x: x) + + cache['a'] = 1 + cache['b'] = 2 + + self.assertEqual(len(cache), 2) + self.assertEqual(cache['a'], 1) + self.assertEqual(cache['b'], 2) + + cache['c'] = 3 + + self.assertEqual(len(cache), 1) + self.assertEqual(cache['c'], 3) + self.assertNotIn('a', cache) + self.assertNotIn('b', cache) + + with self.assertRaises(ValueError): + cache['d'] = 4 + self.assertEqual(len(cache), 1) + self.assertEqual(cache['c'], 3) + def test_decorator(self): self.assertEqual(cached(1), 1) self.assertEqual(cached.cache_info(), (0, 1, 2, 1)) |