1from PyObjCTools.TestSupport import * 2from PyObjCTest.initialize import OC_TestInitialize 3 4class OC_TestInitializePython (OC_TestInitialize): 5 def init(self): 6 return super(OC_TestInitializePython, self).init() 7 8OBJECT_LIST=[] 9class OC_TestInitializePython2 (OC_TestInitialize): 10 def init(self): 11 self = super(OC_TestInitializePython2, self).init() 12 OBJECT_LIST.append(self) 13 return self 14 15class TestInitializing (TestCase): 16 # 17 # These tests make sure that we don't call retain/release on objects 18 # that are not yet initialized. 19 # 20 def testDontRetainUnitialized1(self): 21 start = OC_TestInitialize.numUninitialized() 22 self.assertEquals(start, 0) 23 24 o = OC_TestInitialize.alloc() 25 v = OC_TestInitialize.numUninitialized() 26 self.assertEquals(v, start) 27 28 o = o.init() 29 v = OC_TestInitialize.numUninitialized() 30 self.assertEquals(v, start) 31 32 s = o.dummy() 33 self.assertEquals(s, u"hello") 34 v = OC_TestInitialize.numUninitialized() 35 self.assertEquals(v, start) 36 37 def testDontRetainUnitialized2(self): 38 start = OC_TestInitialize.numUninitialized() 39 self.assertEquals(start, 0) 40 41 o = OC_TestInitialize.makeInstance() 42 self.assertIsInstance(o, OC_TestInitialize) 43 v = OC_TestInitialize.numUninitialized() 44 self.assertEquals(v, start) 45 46 s = o.dummy() 47 self.assertEquals(s, u"hello") 48 v = OC_TestInitialize.numUninitialized() 49 self.assertEquals(v, start) 50 51 def testDontRetainUnitialized3(self): 52 start = OC_TestInitialize.numUninitialized() 53 self.assertEquals(start, 0) 54 55 o = OC_TestInitializePython.makeInstance() 56 self.assertIsInstance(o, OC_TestInitializePython) 57 v = OC_TestInitialize.numUninitialized() 58 self.assertEquals(v, start) 59 60 s = o.dummy() 61 self.assertEquals(s, u"hello") 62 v = OC_TestInitialize.numUninitialized() 63 self.assertEquals(v, start) 64 65 def testDontRetainUnitialized4(self): 66 start = OC_TestInitialize.numUninitialized() 67 self.assertEquals(start, 0) 68 69 o = OC_TestInitializePython2.makeInstance() 70 self.assertIsInstance(o, OC_TestInitializePython2) 71 self.assertIs(OBJECT_LIST[-1], o) 72 del OBJECT_LIST[-1] 73 74 v = OC_TestInitialize.numUninitialized() 75 self.assertEquals(v, start) 76 77 s = o.dummy() 78 self.assertEquals(s, u"hello") 79 v = OC_TestInitialize.numUninitialized() 80 self.assertEquals(v, start) 81 82if __name__ == "__main__": 83 main() 84