diff options
Diffstat (limited to 'repoze/lru/tests.py')
-rw-r--r-- | repoze/lru/tests.py | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/repoze/lru/tests.py b/repoze/lru/tests.py index eae1d47..1b6fae5 100644 --- a/repoze/lru/tests.py +++ b/repoze/lru/tests.py @@ -560,3 +560,76 @@ class DecoratorTests(unittest.TestCase): class DummyLRUCache(dict): def put(self, k, v): return self.__setitem__(k, v) + +class CacherMaker(unittest.TestCase): + def setUp(self): + self.adder=lambda x : x+10 + from ..lru import CacheMaker + self.cache_maker=CacheMaker + + + + def test_named_cache(self): + cache=self.cache_maker() + size=10 + name="name" + decorated=cache.lrucache(maxsize=size, name=name)(self.adder) + self.assertEqual( cache._cache.keys() , [ name ]) + self.assertEqual( cache._cache[name].size,size) + decorated(10) + decorated(11) + self.assertEqual(len(cache._cache[name].data),2) + + def test_excpetion(self): + cache=self.cache_maker() + size=10 + name="name" + decorated=cache.lrucache(maxsize=size, name=name)(self.adder) + with self.assertRaises(KeyError): + cache.lrucache(maxsize=size,name= name) + with self.assertRaises(ValueError): + cache.lrucache() + + + def test_defaultvalue_and_clear(self): + size=10 + cache=self.cache_maker(maxsize=size) + for i in range(100): + decorated=cache.lrucache()(self.adder) + decorated(10) + + self.assertEqual( len(cache._cache) , 100) + for _cache in cache._cache.values(): + self.assertEqual( _cache.size,size) + self.assertEqual(len(_cache.data),1) + ## and test clear cache + cache.clear() + for _cache in cache._cache.values(): + self.assertEqual( _cache.size,size) + self.assertEqual(len(_cache.data),0) + + def test_expiring(self): + size=10 + timeout=10 + name="name" + cache=self.cache_maker(maxsize=size,timeout=timeout) + for i in range(100): + if not i: + decorated=cache.expiring_lrucache(name=name)(self.adder) + self.assertEqual( cache._cache[name].size,size) + else: + decorated=cache.expiring_lrucache()(self.adder) + decorated(10) + + self.assertEqual( len(cache._cache) , 100) + for _cache in cache._cache.values(): + self.assertEqual( _cache.size,size) + self.assertEqual( _cache.default_timeout,timeout) + self.assertEqual(len(_cache.data),1) + ## and test clear cache + cache.clear() + for _cache in cache._cache.values(): + self.assertEqual( _cache.size,size) + self.assertEqual(len(_cache.data),0) + + |