summaryrefslogtreecommitdiff
path: root/repoze/lru/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'repoze/lru/tests.py')
-rw-r--r--repoze/lru/tests.py73
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)
+
+