def test_cached_filter(self): key_default = key_from_args('testing',) @cached_filter def test_filter(value, param=None): return (value, param) res = test_filter('testing') self.assertTrue(key_default in cache._cache) self.assertEqual(cache._cache[key_default], ('testing', None)) cache._cache[key_default] = 'from cache' res = test_filter('testing') self.assertEqual(res, 'from cache') res = test_filter('testing', None) self.assertEqual(res, ('testing', None)) res = test_filter('') self.assertEqual(res, ('', None))
def get_cache_key(self, context): return key_from_args(**context)
def test_key_from_args(self): self.assertEqual(key_from_args('test', 'one', 'two'), key_from_args('test', 'one', 'two')) self.assertEqual(key_from_args('a', b='b', c='c'), key_from_args('a', c='c', b='b'))
def test_key_from_args_collisions(self): self.assertNotEqual(key_from_args('test'), key_from_args('Test')) self.assertNotEqual(key_from_args('testtest'), key_from_args('test', 'test')) self.assertNotEqual(key_from_args('test\x01test'), key_from_args('test', 'test')) self.assertNotEqual(key_from_args('a', b='b', c='c'), key_from_args('a', 'c', b='b'))