From f8fc0dedae7fbcf5a2ed0998e18f625dd0ab42e8 Mon Sep 17 00:00:00 2001
From: "Mads M. Pedersen" <mmpe@dtu.dk>
Date: Fri, 21 Jul 2017 13:03:51 +0200
Subject: [PATCH] example of cache property

---
 wetb/utils/tests/test_caching.py | 25 ++++++++++++++++++-------
 1 file changed, 18 insertions(+), 7 deletions(-)

diff --git a/wetb/utils/tests/test_caching.py b/wetb/utils/tests/test_caching.py
index 417087a1..94530e7c 100644
--- a/wetb/utils/tests/test_caching.py
+++ b/wetb/utils/tests/test_caching.py
@@ -17,9 +17,6 @@ import unittest
 
 from wetb.utils.timing import get_time
 from wetb.utils.caching import cache_function, set_cache_property, cache_method
-import pdb
-
-
 
 
 class Example(object):
@@ -32,6 +29,11 @@ class Example(object):
     def slow_function(self):
         time.sleep(1)
         return 1
+    
+    @property
+    @cache_function
+    def test_cache_property(self):
+        return self.slow_function()
 
     @cache_function
     def test_cache_function(self):
@@ -65,14 +67,14 @@ class TestCacheProperty(unittest.TestCase):
         e = Example()
         self.assertAlmostEqual(e.prop("test")[1], 1, 1)
         self.assertAlmostEqual(e.prop("test")[1], 0, 2)
- 
+  
     def testcache_property_pool(self):
         e = Example()
         e.prop("pool")  #load pool
         self.assertAlmostEqual(e.prop("pool")[1], 0, places=4)
         #print (get_time(e.pool.map)(f, range(10)))
- 
- 
+  
+  
     def test_cache_function(self):
         e = Example()
         self.assertAlmostEqual(get_time(e.test_cache_function)()[1], 1, places=1)
@@ -81,8 +83,8 @@ class TestCacheProperty(unittest.TestCase):
         self.assertAlmostEqual(get_time(e.test_cache_function)()[1], 0, places=1)
         e.clear_cache()
         self.assertAlmostEqual(get_time(e.test_cache_function)()[1], 1, places=1)
+  
  
-
     def test_cache_function_with_arguments(self):
         e = Example()
         self.assertAlmostEqual(get_time(e.test_cache_method1)(3)[1], 1, places=1)
@@ -99,6 +101,15 @@ class TestCacheProperty(unittest.TestCase):
         self.assertEqual(e.test_cache_method1(3), 3)
         self.assertEqual(e.test_cache_method1(5), 5)
         self.assertAlmostEqual(get_time(e.test_cache_method1)(5)[1], 0, places=1)
+         
+    def test_cache_property(self):
+        e = Example()
+        t = time.time()
+        e.test_cache_property
+        self.assertAlmostEqual(time.time()-t, 1, places=1)
+        t = time.time()
+        e.test_cache_property
+        self.assertAlmostEqual(time.time()-t, 0, places=1)
 if __name__ == "__main__":
     #import sys;sys.argv = ['', 'Test.testName']
     unittest.main()
-- 
GitLab