Example #1
0
 def test__registerDoubleAttribute(self):
     """check Attributes._registerDoubleAttribute()
     """
     d = {'g_called' : False,  's_called' : False, 'value' : 0}
     def g(obj):
         d['g_called'] = True
         return d['value']
     def s(obj, value):
         d['s_called'] = True
         d['value'] = value
         return
     a = Attributes()
     wa = weakref.ref(a)
     a._registerDoubleAttribute('a1', g, s)
     self.assertFalse('a1' in a.__dict__)
     self.assertFalse(d['g_called'])
     self.assertFalse(d['s_called'])
     self.assertEqual(0, a.a1)
     self.assertTrue(d['g_called'])
     self.assertFalse(d['s_called'])
     a.a1 = 47
     self.assertTrue(d['s_called'])
     self.assertEqual(47, d['value'])
     self.assertTrue(hasattr(a, 'a1'))
     a._registerDoubleAttribute('a1readonly', g)
     self.assertEqual(47, a.a1readonly)
     self.assertTrue(hasattr(a, 'a1readonly'))
     self.assertRaises(AttributeError, a._setDoubleAttr, 'a1readonly', 7)
     self.assertRaises(AttributeError, setattr, a, 'a1readonly', 5)
     self.assertEqual(47, a.a1readonly)
     a.a1 = 9
     self.assertEqual(9, a.a1readonly)
     self.assertFalse(wa() is None)
     del a
     gc.collect()
     self.assertTrue(wa() is None)
     return