def testOwnershipTransference(self):
     '''Ownership transference from Python to C++ and back again.'''
     p1 = Point(10, 20)
     bb = BlackBox()
     p1_ticket = bb.keepPoint(p1)
     self.assertRaises(RuntimeError, p1.x)
     p1_ret = bb.retrievePoint(p1_ticket)
     self.assertEqual(p1_ret, Point(10, 20))
Esempio n. 2
0
 def testOwnershipTransferenceCppCreated(self):
     '''Ownership transference using a C++ created object.'''
     o1 = ObjectType.create()
     o1.setObjectName('object1')
     o1_refcnt = sys.getrefcount(o1)
     bb = BlackBox()
     o1_ticket = bb.keepObjectType(o1)
     self.assertRaises(RuntimeError, o1.objectName)
 def testOwnershipTransference(self):
     '''Ownership transference from Python to C++ and back again.'''
     p1 = Point(10, 20)
     bb = BlackBox()
     p1_ticket = bb.keepPoint(p1)
     self.assertRaises(RuntimeError, p1.x)
     p1_ret = bb.retrievePoint(p1_ticket)
     self.assertEqual(p1_ret, Point(10, 20))
Esempio n. 4
0
 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)
Esempio n. 5
0
 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)
Esempio n. 6
0
    def testInvalidateParent(self):
        '''Invalidate parent should invalidate children'''
        parent = ObjectType.create()
        child1 = ObjectType(parent)
        child1.setObjectName("child1")
        child2 = ObjectType.create()
        child2.setObjectName("child2")
        child2.setParent(parent)
        grandchild1 = ObjectType(child1)
        grandchild1.setObjectName("grandchild1")
        grandchild2 = ObjectType.create()
        grandchild2.setObjectName("grandchild2")
        grandchild2.setParent(child2)
        bbox = BlackBox()

        bbox.keepObjectType(parent)  # Should invalidate the parent

        self.assertRaises(RuntimeError, parent.objectName)
        # some children still valid they are wrapper classes
        self.assertEqual(child1.objectName(), "child1")
        self.assertRaises(RuntimeError, child2.objectName)
        self.assertEqual(grandchild1.objectName(), "grandchild1")
        self.assertRaises(RuntimeError, grandchild2.objectName)
    def testInvalidateParent(self):
        '''Invalidate parent should invalidate children'''
        parent = ObjectType.create()
        child1 = ObjectType(parent)
        child1.setObjectName("child1")
        child2 = ObjectType.create()
        child2.setObjectName("child2")
        child2.setParent(parent)
        grandchild1 = ObjectType(child1)
        grandchild1.setObjectName("grandchild1")
        grandchild2 = ObjectType.create()
        grandchild2.setObjectName("grandchild2")
        grandchild2.setParent(child2)
        bbox = BlackBox()

        bbox.keepObjectType(parent) # Should invalidate the parent

        self.assertRaises(RuntimeError, parent.objectName)
        # some children still valid they are wrapper classes
        self.assertEqual(child1.objectName(), "child1")
        self.assertRaises(RuntimeError, child2.objectName)
        self.assertEqual(grandchild1.objectName(), "grandchild1")
        self.assertRaises(RuntimeError, grandchild2.objectName)
    def testInvalidateChild(self):
        '''Invalidating method call should remove child from the care of a parent if it has one.'''
        parent = ObjectType()
        child1 = ObjectType(parent)
        child1.setObjectName('child1')
        child2 = ObjectType.create()
        child2.setParent(parent)
        child2.setObjectName('child2')

        self.assertEqual(parent.children(), [child1, child2])

        bbox = BlackBox()

        # This method steals ownership from Python to C++.
        bbox.keepObjectType(child1)
        self.assertEqual(parent.children(), [child2])

        bbox.keepObjectType(child2)
        self.assertEqual(parent.children(), [])

        del parent

        self.assertEqual(child1.objectName(), 'child1')
        self.assertRaises(RuntimeError, child2.objectName)
    def testInvalidateChild(self):
        '''Invalidating method call should remove child from the care of a parent if it has one.'''
        parent = ObjectType()
        child1 = ObjectType(parent)
        child1.setObjectName('child1')
        child2 = ObjectType.create()
        child2.setParent(parent)
        child2.setObjectName('child2')

        self.assertEqual(parent.children(), [child1, child2])

        bbox = BlackBox()

        # This method steals ownership from Python to C++.
        bbox.keepObjectType(child1)
        self.assertEqual(parent.children(), [child2])

        bbox.keepObjectType(child2)
        self.assertEqual(parent.children(), [])

        del parent

        self.assertEqual(child1.objectName(), 'child1')
        self.assertRaises(RuntimeError, child2.objectName)