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:
Joshua Harlow
2014-05-20 15:48:50 -07:00
committed by Thomas Goirand
parent 96eb0dcb79
commit 1aec454e2f

View File

@@ -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 = {