示例#1
0
 def test__namesOfDoubleAttributes(self):
     """check Attributes._namesOfDoubleAttributes()
     """
     a = Attributes()
     self.assertEqual(0, len(a._namesOfDoubleAttributes()))
     pq = PairQuantity()
     self.assertNotEqual(0, len(pq._namesOfDoubleAttributes()))
     self.assertFalse('bar' in pq._namesOfDoubleAttributes())
     pq._registerDoubleAttribute('bar')
     self.assertTrue('bar' in pq._namesOfDoubleAttributes())
     return
示例#2
0
 def test___getattr__(self):
     """check Attributes.__getattr__()
     """
     a = Attributes()
     self.assertRaises(AttributeError, getattr, a, 'invalid')
     a.x = 11
     self.assertEqual(11, a.x)
     pdfc = PDFCalculator()
     pdfc._setDoubleAttr('rmax', 12.34)
     self.assertEqual(12.34, pdfc.rmax)
     return
示例#3
0
 def test___setattr__(self):
     """check Attributes.__setattr__()
     """
     # normal attribute
     a = Attributes()
     a.x = 45
     self.assertTrue("x" in a.__dict__)
     self.assertFalse("x" in a._namesOfDoubleAttributes())
     self.assertRaises(AttributeError, a._getDoubleAttr, "x")
     self.assertRaises(AttributeError, a._setDoubleAttr, "x", 13)
     del a.x
     a._registerDoubleAttribute("x")
     self.assertTrue("x" in a._namesOfDoubleAttributes())
     a.x = 27
     self.assertEqual(27, a._getDoubleAttr("x"))
     return
示例#4
0
 def test__hasDoubleAttr(self):
     """check Attributes._hasDoubleAttr()
     """
     a = Attributes()
     a.foo = 45
     self.assertFalse(a._hasDoubleAttr('foo'))
     a._registerDoubleAttribute('foo')
     self.assertTrue(a._hasDoubleAttr('foo'))
     return
示例#5
0
 def test__hasDoubleAttr(self):
     """check Attributes._hasDoubleAttr()
     """
     a = Attributes()
     a.foo = 45
     self.failIf(a._hasDoubleAttr('foo'))
     a._registerDoubleAttribute('foo')
     self.failUnless(a._hasDoubleAttr('foo'))
     return
示例#6
0
 def test__namesOfWritableDoubleAttributes(self):
     """check Attributes._namesOfDoubleAttributes()
     """
     a = Attributes()
     self.assertEqual(0, len(a._namesOfDoubleAttributes()))
     a._registerDoubleAttribute('bar', lambda obj: 13)
     self.assertEqual(13, a._getDoubleAttr('bar'))
     self.assertEqual(13, a.bar)
     self.assertEqual(1, len(a._namesOfDoubleAttributes()))
     self.assertEqual(0, len(a._namesOfWritableDoubleAttributes()))
     pdfc = PDFCalculator()
     self.failUnless('extendedrmin' in pdfc._namesOfDoubleAttributes())
     self.failUnless('extendedrmax' in pdfc._namesOfDoubleAttributes())
     self.failIf('extendedrmin' in pdfc._namesOfWritableDoubleAttributes())
     self.failIf('extendedrmax' in pdfc._namesOfWritableDoubleAttributes())
     return
示例#7
0
 def test__hasDoubleAttr(self):
     """check Attributes._hasDoubleAttr()
     """
     a = Attributes()
     a.foo = 45
     self.failIf(a._hasDoubleAttr('foo'))
     a._registerDoubleAttribute('foo')
     self.failUnless(a._hasDoubleAttr('foo'))
     return
示例#8
0
 def test__namesOfWritableDoubleAttributes(self):
     """check Attributes._namesOfDoubleAttributes()
     """
     a = Attributes()
     self.assertEqual(0, len(a._namesOfDoubleAttributes()))
     a._registerDoubleAttribute('bar', lambda obj: 13)
     self.assertEqual(13, a._getDoubleAttr('bar'))
     self.assertEqual(13, a.bar)
     self.assertEqual(1, len(a._namesOfDoubleAttributes()))
     self.assertEqual(0, len(a._namesOfWritableDoubleAttributes()))
     pdfc = PDFCalculator()
     self.failUnless('extendedrmin' in pdfc._namesOfDoubleAttributes())
     self.failUnless('extendedrmax' in pdfc._namesOfDoubleAttributes())
     self.failIf('extendedrmin' in pdfc._namesOfWritableDoubleAttributes())
     self.failIf('extendedrmax' in pdfc._namesOfWritableDoubleAttributes())
     return
示例#9
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)
        self.failIf(wa() is None)
        a._registerDoubleAttribute('a1', g, s)
        self.failIf('a1' in a.__dict__)
        self.failIf(d['g_called'])
        self.failIf(d['s_called'])
        self.assertEqual(0, a.a1)
        self.failUnless(d['g_called'])
        self.failIf(d['s_called'])
        a.a1 = 47
        self.failUnless(d['s_called'])
        self.assertEqual(47, d['value'])
        self.failUnless(hasattr(a, 'a1'))
        a._registerDoubleAttribute('a1readonly', g)
        self.assertEqual(47, a.a1readonly)
        self.failUnless(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)
        del a
        self.failUnless(wa() is None)
        return
示例#10
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