Add tests for the misc.cachedproperty descriptor
Add a few tests that verify it is working as expected. Change-Id: I6c062f84f7c2a6baf8fc9a697ebe2d715f82d332
This commit is contained in:
committed by
Thomas Goirand
parent
96eb0dcb79
commit
1aec454e2f
@@ -312,6 +312,65 @@ class GetAllClassNamesTest(test.TestCase):
|
||||
self.assertEqual(names, test_utils.RUNTIME_ERROR_CLASSES[:-2])
|
||||
|
||||
|
||||
class CachedPropertyTest(test.TestCase):
|
||||
def test_attribute_caching(self):
|
||||
|
||||
class A(object):
|
||||
def __init__(self):
|
||||
self.call_counter = 0
|
||||
|
||||
@misc.cachedproperty
|
||||
def b(self):
|
||||
self.call_counter += 1
|
||||
return 'b'
|
||||
|
||||
a = A()
|
||||
self.assertEqual('b', a.b)
|
||||
self.assertEqual('b', a.b)
|
||||
self.assertEqual(1, a.call_counter)
|
||||
|
||||
def test_custom_property(self):
|
||||
|
||||
class A(object):
|
||||
@misc.cachedproperty('_c')
|
||||
def b(self):
|
||||
return 'b'
|
||||
|
||||
a = A()
|
||||
self.assertEqual('b', a.b)
|
||||
self.assertEqual('b', a._c)
|
||||
|
||||
def test_no_delete(self):
|
||||
|
||||
def try_del(a):
|
||||
del a.b
|
||||
|
||||
class A(object):
|
||||
@misc.cachedproperty
|
||||
def b(self):
|
||||
return 'b'
|
||||
|
||||
a = A()
|
||||
self.assertEqual('b', a.b)
|
||||
self.assertRaises(AttributeError, try_del, a)
|
||||
self.assertEqual('b', a.b)
|
||||
|
||||
def test_set(self):
|
||||
|
||||
def try_set(a):
|
||||
a.b = 'c'
|
||||
|
||||
class A(object):
|
||||
@misc.cachedproperty
|
||||
def b(self):
|
||||
return 'b'
|
||||
|
||||
a = A()
|
||||
self.assertEqual('b', a.b)
|
||||
self.assertRaises(AttributeError, try_set, a)
|
||||
self.assertEqual('b', a.b)
|
||||
|
||||
|
||||
class AttrDictTest(test.TestCase):
|
||||
def test_ok_create(self):
|
||||
attrs = {
|
||||
|
||||
Reference in New Issue
Block a user