diff options
Diffstat (limited to 'gitlint-core/gitlint/tests/test_cache.py')
-rw-r--r-- | gitlint-core/gitlint/tests/test_cache.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/gitlint-core/gitlint/tests/test_cache.py b/gitlint-core/gitlint/tests/test_cache.py new file mode 100644 index 0000000..08b821e --- /dev/null +++ b/gitlint-core/gitlint/tests/test_cache.py @@ -0,0 +1,55 @@ +from gitlint.cache import PropertyCache, cache +from gitlint.tests.base import BaseTestCase + + +class CacheTests(BaseTestCase): + class MyClass(PropertyCache): + """Simple class that has cached properties, used for testing.""" + + def __init__(self): + PropertyCache.__init__(self) + self.counter = 0 + + @property + @cache + def foo(self): + self.counter += 1 + return "bår" + + @property + @cache(cachekey="hür") + def bar(self): + self.counter += 1 + return "fōo" + + def test_cache(self): + # Init new class with cached properties + myclass = self.MyClass() + self.assertEqual(myclass.counter, 0) + self.assertDictEqual(myclass._cache, {}) + + # Assert that function is called on first access, cache is set + self.assertEqual(myclass.foo, "bår") + self.assertEqual(myclass.counter, 1) + self.assertDictEqual(myclass._cache, {"foo": "bår"}) + + # After function is not called on subsequent access, cache is still set + self.assertEqual(myclass.foo, "bår") + self.assertEqual(myclass.counter, 1) + self.assertDictEqual(myclass._cache, {"foo": "bår"}) + + def test_cache_custom_key(self): + # Init new class with cached properties + myclass = self.MyClass() + self.assertEqual(myclass.counter, 0) + self.assertDictEqual(myclass._cache, {}) + + # Assert that function is called on first access, cache is set with custom key + self.assertEqual(myclass.bar, "fōo") + self.assertEqual(myclass.counter, 1) + self.assertDictEqual(myclass._cache, {"hür": "fōo"}) + + # After function is not called on subsequent access, cache is still set + self.assertEqual(myclass.bar, "fōo") + self.assertEqual(myclass.counter, 1) + self.assertDictEqual(myclass._cache, {"hür": "fōo"}) |