コード例 #1
0
    def testUseDefaultValues(self):
        o = ObjectType()

        o.setObjectNameWithSize(size=3)
        self.assertEqual(o.objectName(), "<un") # use name='unknown' default argument

        o.setObjectSplittedName("")
        self.assertEqual(o.objectName(), "<unknown>") # user prefix='<unk' and suffix='nown>'
コード例 #2
0
    def testUseDefaultValues(self):
        o = ObjectType()

        o.setObjectNameWithSize(size=3)
        self.assertEqual(o.objectName(),
                         "<un")  # use name='unknown' default argument

        o.setObjectSplittedName("")
        self.assertEqual(o.objectName(),
                         "<unknown>")  # user prefix='<unk' and suffix='nown>'
コード例 #3
0
 def testObjectTypeReferenceAndPointer(self):
     '''In C++ we have "function(const ObjectType&, int)",
     in Python we add "function(ValueType)".'''
     obj = ObjectType()
     obj.setObjectName('sbrubbles')
     multiplier = 3.0
     control = len(obj.objectName()) * multiplier
     self.assertEqual(SampleNamespace.passReferenceToObjectType(obj, multiplier), control)
     control = len(obj.objectName())
     self.assertEqual(SampleNamespace.passReferenceToObjectType(obj), control)
コード例 #4
0
 def testObjectTypeReferenceAndPointer(self):
     '''In C++ we have "function(const ObjectType&, int)",
     in Python we add "function(ValueType)".'''
     obj = ObjectType()
     obj.setObjectName('sbrubbles')
     multiplier = 3.0
     control = len(obj.objectName()) * multiplier
     self.assertEqual(SampleNamespace.passReferenceToObjectType(obj, multiplier), control)
     control = len(obj.objectName())
     self.assertEqual(SampleNamespace.passReferenceToObjectType(obj), control)
コード例 #5
0
    def testMoreArguments(self):
        o = ObjectType()

        o.setObjectSplittedName("", prefix="pys", suffix="ide")
        self.assertEqual(o.objectName(), "pyside")

        o.setObjectSplittedName("", suffix="ide", prefix="pys")
        self.assertEqual(o.objectName(), "pyside")

        o.setObjectNameWithSize(name="pyside", size=6)
        self.assertEqual(o.objectName(), "pyside")

        o.setObjectNameWithSize(size=6, name="pyside")
        self.assertEqual(o.objectName(), "pyside")
コード例 #6
0
    def testMoreArguments(self):
        o = ObjectType()

        o.setObjectSplittedName("", prefix="pys", suffix="ide")
        self.assertEqual(o.objectName(), "pyside")

        o.setObjectSplittedName("", suffix="ide", prefix="pys")
        self.assertEqual(o.objectName(), "pyside")

        o.setObjectNameWithSize(name="pyside", size=6)
        self.assertEqual(o.objectName(), "pyside")

        o.setObjectNameWithSize(size=6, name="pyside")
        self.assertEqual(o.objectName(), "pyside")
コード例 #7
0
    def testDeleteChild(self):
        '''Delete child in C++ should invalidate child - using C++ wrapper'''
        parent = ObjectType()
        parent.setObjectName('parent')
        child = ObjectType(parent)
        child.setObjectName('child')

        parent.killChild('child')
        self.assertRaises(RuntimeError, child.objectName)
        self.assertEqual(parent.objectName(), 'parent')
コード例 #8
0
    def testDeleteChild(self):
        '''Delete child in C++ should invalidate child - using C++ wrapper'''
        parent = ObjectType()
        parent.setObjectName('parent')
        child = ObjectType(parent)
        child.setObjectName('child')

        parent.killChild('child')
        self.assertRaises(RuntimeError, child.objectName)
        self.assertEqual(parent.objectName(), 'parent')
コード例 #9
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)
コード例 #10
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)
コード例 #11
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)
コード例 #12
0
    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)
コード例 #13
0
    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)
コード例 #14
0
 def testObjectTypeSetObjectNameWithStrInstantiation(self):
     '''ObjectType.setObjectName with Str instantiation as argument.'''
     s = 'object name'
     o = ObjectType()
     o.setObjectName(Str(s))
     self.assertEqual(str(o.objectName()), s)
コード例 #15
0
 def testObjectTypeSetObjectNameWithStrVariable(self):
     '''ObjectType.setObjectName with Str variable as argument.'''
     s = Str('object name')
     o = ObjectType()
     o.setObjectName(s)
     self.assertEqual(str(o.objectName()), str(s))
コード例 #16
0
 def testObjectTypeSetObjectNameWithStrInstantiation(self):
     '''ObjectType.setObjectName with Str instantiation as argument.'''
     s = 'object name'
     o = ObjectType()
     o.setObjectName(Str(s))
     self.assertEqual(str(o.objectName()), s)
コード例 #17
0
 def testObjectTypeSetObjectNameWithPythonString(self):
     '''ObjectType.setObjectName with Python string as argument.'''
     o = ObjectType()
     o.setObjectName('object name')
     self.assertEqual(str(o.objectName()), 'object name')
コード例 #18
0
 def testObjectTypeSetObjectNameWithStrVariable(self):
     '''ObjectType.setObjectName with Str variable as argument.'''
     s = Str('object name')
     o = ObjectType()
     o.setObjectName(s)
     self.assertEqual(str(o.objectName()), str(s))
コード例 #19
0
 def testObjectTypeSetObjectNameWithPythonString(self):
     '''ObjectType.setObjectName with Python string as argument.'''
     o = ObjectType()
     o.setObjectName('object name')
     self.assertEqual(str(o.objectName()), 'object name')