aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside2/tests/QtCore/qobject_parent_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'sources/pyside2/tests/QtCore/qobject_parent_test.py')
-rw-r--r--sources/pyside2/tests/QtCore/qobject_parent_test.py292
1 files changed, 0 insertions, 292 deletions
diff --git a/sources/pyside2/tests/QtCore/qobject_parent_test.py b/sources/pyside2/tests/QtCore/qobject_parent_test.py
deleted file mode 100644
index 386209e8a..000000000
--- a/sources/pyside2/tests/QtCore/qobject_parent_test.py
+++ /dev/null
@@ -1,292 +0,0 @@
-#############################################################################
-##
-## Copyright (C) 2016 The Qt Company Ltd.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is part of the test suite of Qt for Python.
-##
-## $QT_BEGIN_LICENSE:GPL-EXCEPT$
-## Commercial License Usage
-## Licensees holding valid commercial Qt licenses may use this file in
-## accordance with the commercial license agreement provided with the
-## Software or, alternatively, in accordance with the terms contained in
-## a written agreement between you and The Qt Company. For licensing terms
-## and conditions see https://www.qt.io/terms-conditions. For further
-## information use the contact form at https://www.qt.io/contact-us.
-##
-## GNU General Public License Usage
-## Alternatively, this file may be used under the terms of the GNU
-## General Public License version 3 as published by the Free Software
-## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-## included in the packaging of this file. Please review the following
-## information to ensure the GNU General Public License requirements will
-## be met: https://www.gnu.org/licenses/gpl-3.0.html.
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-'''Test cases for parent-child relationship'''
-
-import os
-import sys
-from sys import getrefcount
-import unittest
-
-sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
-from init_paths import init_test_paths
-init_test_paths(False)
-
-from PySide2.QtCore import *
-
-class ParentRefCountCase(unittest.TestCase):
- '''Test case for the refcount changes of setParent'''
-
- def setUp(self):
- #Acquire resources
- self.parent = QObject()
- self.child = QObject()
-
- def tearDown(self):
- #Release resources
- del self.child
- del self.parent
-
- def testSetParent(self):
- #QObject.setParent() refcount changes
- self.assertEqual(getrefcount(self.child), 2)
- self.child.setParent(self.parent)
- self.assertEqual(getrefcount(self.child), 3)
-
- def testSetParentTwice(self):
- self.assertEqual(getrefcount(self.child), 2)
- self.child.setParent(self.parent)
- self.assertEqual(getrefcount(self.child), 3)
- self.child.setParent(self.parent)
- self.assertEqual(getrefcount(self.child), 3)
-
- def testConstructor(self):
- #QObject(QObject) refcount changes
- child = QObject(self.parent)
- self.assertEqual(getrefcount(child), 3)
-
-class ParentCase(unittest.TestCase):
- '''Small collection of tests related to parent-child relationship'''
-
- def testSetParent(self):
- #QObject.setParent()
- parent = QObject()
- child = QObject()
- child.setParent(parent)
-
- self.assertEqual(parent, child.parent())
-
- def testParentConstructor(self):
- #QObject(parent)
- parent = QObject()
- child = QObject(parent)
-
- self.assertEqual(parent, child.parent())
-
- orig_repr = repr(child)
- del child
- self.assertEqual(orig_repr, repr(parent.children()[0]))
-
- def testChildren(self):
- #QObject.children()
- parent = QObject()
- children = [QObject(parent) for x in range(25)]
-
- self.assertEqual(parent.children(), children)
-
- def testFindChild(self):
- #QObject.findChild() with all QObject
- parent = QObject()
- name = 'object%d'
- children = [QObject(parent) for i in range(20)]
-
- for i, child in enumerate(children):
- child.setObjectName(name % i)
-
- for i, child in enumerate(children):
- self.assertEqual(child, parent.findChild(QObject, name % i))
-
- def testFindChildWithoutName(self):
- parent = QObject()
- name = 'object%d'
- children = [QObject(parent) for i in range(20)]
-
- for i, child in enumerate(children):
- child.setObjectName(name % i)
-
- child = parent.findChild(QObject)
- self.assertTrue(isinstance(child, QObject))
-
- def testFindChildren(self):
- #QObject.findChildren() with all QObject
- parent = QObject()
- target_name = 'foo'
- children = [QTimer(parent) for i in range(20)]
- children.extend([QObject(parent) for i in range(20)])
-
- for i, child in enumerate(children):
- if i % 5 == 0:
- child.setObjectName(target_name)
- else:
- child.setObjectName(str(i))
-
- # Emulates findChildren with the intended outcome
- target_children = [x for x in children if x.objectName() == target_name]
- test_children = parent.findChildren(QObject, target_name)
- self.assertEqual(target_children, test_children)
-
- # test findChildren default value
- res = parent.findChildren(QTimer)
- self.assertEqual(len(res), 20)
-
- # test findChildren with a QRegularExpression
- res = parent.findChildren(QObject, QRegularExpression("^fo+"))
- self.assertEqual(res, test_children)
-
- def testParentEquality(self):
- #QObject.parent() == parent
- parent = QObject()
- child = QObject(parent)
- self.assertEqual(parent, child.parent())
-
-
-class TestParentOwnership(unittest.TestCase):
- '''Test case for Parent/Child object ownership'''
-
- def testParentDestructor(self):
- parent = QObject()
- self.assertEqual(getrefcount(parent), 2)
-
- child = QObject(parent)
- self.assertEqual(getrefcount(child), 3)
- self.assertEqual(getrefcount(parent), 2)
-
- del parent
- self.assertEqual(getrefcount(child), 2)
-
- # this will fail because parent deleted child cpp object
- self.assertRaises(RuntimeError, lambda :child.objectName())
-
- # test parent with multiples children
- def testMultipleChildren(self):
- o = QObject()
- self.assertEqual(getrefcount(o), 2)
-
- c = QObject(o)
- self.assertEqual(getrefcount(c), 3)
- self.assertEqual(getrefcount(o), 2)
-
- c2 = QObject(o)
- self.assertEqual(getrefcount(o), 2)
- self.assertEqual(getrefcount(c), 3)
- self.assertEqual(getrefcount(c2), 3)
-
- del o
- self.assertEqual(getrefcount(c), 2)
- self.assertEqual(getrefcount(c2), 2)
-
- # this will fail because parent deleted child cpp object
- self.assertRaises(RuntimeError, lambda :c.objectName())
- self.assertRaises(RuntimeError, lambda :c2.objectName())
-
- # test recursive parent
- def testRecursiveParent(self):
- o = QObject()
- self.assertEqual(getrefcount(o), 2)
-
- c = QObject(o)
- self.assertEqual(getrefcount(c), 3)
- self.assertEqual(getrefcount(o), 2)
-
- c2 = QObject(c)
- self.assertEqual(getrefcount(o), 2)
- self.assertEqual(getrefcount(c), 3)
- self.assertEqual(getrefcount(c2), 3)
-
- del o
- self.assertEqual(getrefcount(c), 2)
- self.assertEqual(getrefcount(c2), 2)
-
- # this will fail because parent deleted child cpp object
- self.assertRaises(RuntimeError, lambda :c.objectName())
- self.assertRaises(RuntimeError, lambda :c2.objectName())
-
- # test parent transfer
- def testParentTransfer(self):
- o = QObject()
- self.assertEqual(getrefcount(o), 2)
-
- c = QObject()
- self.assertEqual(getrefcount(c), 2)
-
- c.setParent(o)
- self.assertEqual(getrefcount(c), 3)
-
- c.setParent(None)
- self.assertEqual(getrefcount(c), 2)
-
- del c
- del o
-
-
-class ExtQObject(QObject):
- def __init__(self):
- QObject.__init__(self)
-
-class ReparentingTest(unittest.TestCase):
- '''Test cases for reparenting'''
-
- def testParentedQObjectIdentity(self):
- object_list = []
- parent = QObject()
- for i in range(3):
- obj = QObject()
- object_list.append(obj)
- obj.setParent(parent)
- for child in parent.children():
- self.assertTrue(child in object_list)
-
- def testParentedExtQObjectType(self):
- object_list = []
- parent = QObject()
- for i in range(3):
- obj = ExtQObject()
- object_list.append(obj)
- obj.setParent(parent)
- for orig, child in zip(object_list, parent.children()):
- self.assertEqual(type(orig), type(child))
-
- def testReparentedQObjectIdentity(self):
- object_list = []
- old_parent = QObject()
- new_parent = QObject()
- for i in range(3):
- obj = QObject()
- object_list.append(obj)
- obj.setParent(old_parent)
- for obj in object_list:
- obj.setParent(new_parent)
- for child in new_parent.children():
- self.assertTrue(child in object_list)
-
- def testReparentedExtQObjectType(self):
- object_list = []
- old_parent = QObject()
- new_parent = QObject()
- for i in range(3):
- obj = ExtQObject()
- object_list.append(obj)
- obj.setParent(old_parent)
- for obj in object_list:
- obj.setParent(new_parent)
- for orig, child in zip(object_list, new_parent.children()):
- self.assertEqual(type(orig), type(child))
-
-
-if __name__ == '__main__':
- unittest.main()