From b6bc3508609fcdaab3cae50648a35ea44f7b6112 Mon Sep 17 00:00:00 2001 From: Thomas Kemmer Date: Fri, 28 Aug 2015 16:30:38 +0200 Subject: Code/interface cleanup and documentation. --- tests/__init__.py | 6 +++--- tests/test_method.py | 41 ++++++++++++++++++++++++++++++++++++++--- 2 files changed, 41 insertions(+), 6 deletions(-) (limited to 'tests') diff --git a/tests/__init__.py b/tests/__init__.py index 011a19e..9a17c1c 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -244,7 +244,7 @@ class DecoratorTestMixin(object): def test_decorator(self): cache = self.cache(2) - wrapper = cachetools.cache(cache)(self.func) + wrapper = cachetools.cached(cache)(self.func) self.assertEqual(len(cache), 0) self.assertEqual(wrapper.__wrapped__, self.func) @@ -278,7 +278,7 @@ class DecoratorTestMixin(object): key += tuple(type(v) for v in args) key += tuple(type(v) for _, v in sorted(kwargs.items())) return key - wrapper = cachetools.cache(cache, key=typedkey)(self.func) + wrapper = cachetools.cached(cache, key=typedkey)(self.func) self.assertEqual(len(cache), 0) self.assertEqual(wrapper.__wrapped__, self.func) @@ -319,7 +319,7 @@ class DecoratorTestMixin(object): pass cache = self.cache(2) - wrapper = cachetools.cache(cache, lock=Lock())(self.func) + wrapper = cachetools.cached(cache, lock=Lock())(self.func) self.assertEqual(len(cache), 0) self.assertEqual(wrapper.__wrapped__, self.func) diff --git a/tests/test_method.py b/tests/test_method.py index 82337e0..a78ac4b 100644 --- a/tests/test_method.py +++ b/tests/test_method.py @@ -6,8 +6,6 @@ from cachetools import LRUCache, cachedmethod class Cached(object): - count = 0 - def __init__(self, cache, count=0): self.cache = cache self.count = count @@ -25,6 +23,23 @@ class Cached(object): return count +class Locked(object): + + def __init__(self, cache): + self.cache = cache + self.count = 0 + + @cachedmethod(operator.attrgetter('cache'), lock=lambda self: self) + def get(self, value): + return self.count + + def __enter__(self): + self.count += 1 + + def __exit__(self, *exc): + pass + + class CachedMethodTest(unittest.TestCase): def test_dict(self): @@ -107,7 +122,7 @@ class CachedMethodTest(unittest.TestCase): def __add__(self, other): return Int(fractions.Fraction.__add__(self, other)) - cached = Cached(weakref.WeakValueDictionary(), Int(0)) + cached = Cached(weakref.WeakValueDictionary(), count=Int(0)) self.assertEqual(cached.cache, cached.get.cache(cached)) self.assertEqual(cached.get(0), 0) @@ -125,3 +140,23 @@ class CachedMethodTest(unittest.TestCase): cached.cache.clear() self.assertEqual(cached.get(1), 5) + + def test_locked_dict(self): + cached = Locked({}) + self.assertEqual(cached.cache, cached.get.cache(cached)) + + self.assertEqual(cached.get(0), 1) + self.assertEqual(cached.get(1), 3) + self.assertEqual(cached.get(1), 3) + self.assertEqual(cached.get(1.0), 3) + self.assertEqual(cached.get(2.0), 7) + + def test_nocache(self): + cached = Locked(None) + self.assertEqual(None, cached.get.cache(cached)) + + self.assertEqual(cached.get(0), 0) + self.assertEqual(cached.get(1), 0) + self.assertEqual(cached.get(1), 0) + self.assertEqual(cached.get(1.0), 0) + self.assertEqual(cached.get(1.0), 0) -- cgit v1.2.3