summaryrefslogtreecommitdiff
path: root/t/unit/utils/test_objects.py
diff options
context:
space:
mode:
Diffstat (limited to 't/unit/utils/test_objects.py')
-rw-r--r--t/unit/utils/test_objects.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/t/unit/utils/test_objects.py b/t/unit/utils/test_objects.py
new file mode 100644
index 00000000..8b13a405
--- /dev/null
+++ b/t/unit/utils/test_objects.py
@@ -0,0 +1,53 @@
+from __future__ import absolute_import, unicode_literals
+
+from kombu.utils.objects import cached_property
+
+
+class test_cached_property:
+
+ def test_deleting(self):
+
+ class X(object):
+ xx = False
+
+ @cached_property
+ def foo(self):
+ return 42
+
+ @foo.deleter # noqa
+ def foo(self, value):
+ self.xx = value
+
+ x = X()
+ del(x.foo)
+ assert not x.xx
+ x.__dict__['foo'] = 'here'
+ del(x.foo)
+ assert x.xx == 'here'
+
+ def test_when_access_from_class(self):
+
+ class X(object):
+ xx = None
+
+ @cached_property
+ def foo(self):
+ return 42
+
+ @foo.setter # noqa
+ def foo(self, value):
+ self.xx = 10
+
+ desc = X.__dict__['foo']
+ assert X.foo is desc
+
+ assert desc.__get__(None) is desc
+ assert desc.__set__(None, 1) is desc
+ assert desc.__delete__(None) is desc
+ assert desc.setter(1)
+
+ x = X()
+ x.foo = 30
+ assert x.xx == 10
+
+ del(x.foo)