def testBlackBoxReleasingUnknownObjectType(self): '''Asks BlackBox to release an unknown ObjectType.''' o1 = ObjectType() o2 = ObjectType() bb = BlackBox() o1_ticket = bb.keepObjectType(o1) o3 = bb.retrieveObjectType(-5) self.assertEqual(o3, None)
def testOwnershipTransference(self): '''Ownership transference from Python to C++ and back again.''' o1 = ObjectType() o1.setObjectName('object1') o1_refcnt = sys.getrefcount(o1) o2 = ObjectType() o2.setObjectName('object2') o2_refcnt = sys.getrefcount(o2) bb = BlackBox() o1_ticket = bb.keepObjectType(o1) o2_ticket = bb.keepObjectType(o2) self.assertEqual(set(bb.objects()), set([o1, o2])) self.assertEqual(str(o1.objectName()), 'object1') self.assertEqual(str(o2.objectName()), 'object2') self.assertEqual(sys.getrefcount(o1), o1_refcnt + 1) # PySide give +1 ref to object with c++ ownership self.assertEqual(sys.getrefcount(o2), o2_refcnt + 1) o2 = bb.retrieveObjectType(o2_ticket) self.assertEqual(sys.getrefcount(o2), o2_refcnt) del bb self.assertRaises(RuntimeError, o1.objectName) self.assertEqual(str(o2.objectName()), 'object2') self.assertEqual(sys.getrefcount(o2), o2_refcnt)