aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/tests/smartbinding/smart_pointer_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken2/tests/smartbinding/smart_pointer_test.py')
-rw-r--r--sources/shiboken2/tests/smartbinding/smart_pointer_test.py207
1 files changed, 0 insertions, 207 deletions
diff --git a/sources/shiboken2/tests/smartbinding/smart_pointer_test.py b/sources/shiboken2/tests/smartbinding/smart_pointer_test.py
deleted file mode 100644
index 6c4c2c8e9..000000000
--- a/sources/shiboken2/tests/smartbinding/smart_pointer_test.py
+++ /dev/null
@@ -1,207 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-#############################################################################
-##
-## Copyright (C) 2017 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$
-##
-#############################################################################
-
-import unittest
-from copy import copy
-from smart import Obj, Registry, Integer
-
-def objCount():
- return Registry.getInstance().countObjects()
-
-def integerCount():
- return Registry.getInstance().countIntegers()
-
-class SmartPointerTests(unittest.TestCase):
- def testObjSmartPointer(self):
- # Uncomment to see more debug info about creation of objects and ref counts.
- # Registry.getInstance().setShouldPrint(True)
-
- # Create Obj.
- o = Obj()
- self.assertEqual(objCount(), 1)
-
- # Create a shared pointer to an Obj together with an Obj.
- ptrToObj = o.giveSharedPtrToObj()
- self.assertEqual(objCount(), 2)
-
- # Delete the old Obj.
- o = None
- self.assertEqual(objCount(), 1)
-
- # Get a wrapper to the Obj inside of the shared pointer, object count should not change.
- obj = ptrToObj.data()
- self.assertEqual(objCount(), 1)
- obj.m_integer = 50
- self.assertEqual(obj.m_integer, 50)
-
- # Set and get a member value via shared pointer (like operator->).
- ptrToObj.m_integer = 100
- self.assertEqual(ptrToObj.m_integer, 100)
-
- # Get inner PyObject via shared pointer (like operator->) and set value in it.
- ptrToObj.m_internalInteger.m_int = 200
- self.assertEqual(ptrToObj.m_internalInteger.m_int, 200)
-
- # Pass smart pointer as argument to a method, return value is the value of m_integer of
- # passed Obj inside the smart pointer.
- result = ptrToObj.takeSharedPtrToObj(ptrToObj)
- self.assertEqual(result, 100)
-
- # Pass an Integer as an argument that returns itself.
- result = ptrToObj.takeInteger(ptrToObj.m_internalInteger)
- self.assertEqual(integerCount(), 2)
- result = None
- self.assertEqual(integerCount(), 1)
-
- # Make a copy of the shared pointer, object count should not change.
- ptrToObj2 = copy(ptrToObj)
- self.assertEqual(objCount(), 1)
-
- # Delete the first shared pointer, object count should not change because the second
- # one still has a reference.
- del ptrToObj
- self.assertEqual(objCount(), 1)
-
- # Delete the second smart pointer, object should be deleted.
- del ptrToObj2
- self.assertEqual(objCount(), 0)
- self.assertEqual(integerCount(), 0)
-
- def testIntegerSmartPointer(self):
- # Uncomment to see more debug info about creation of objects and ref counts.
- # Registry.getInstance().setShouldPrint(True)
-
- # Create Obj.
- o = Obj()
- self.assertEqual(objCount(), 1)
-
- # Create a shared pointer to an Integer together with an Integer.
- ptrToInteger = o.giveSharedPtrToInteger()
- self.assertEqual(objCount(), 1)
- self.assertEqual(integerCount(), 2)
-
- # Get a wrapper to the Integer inside of the shared pointer, integer count should not
- # change.
- integer = ptrToInteger.data()
- self.assertEqual(integerCount(), 2)
- integer.m_int = 50
- self.assertEqual(integer.m_int, 50)
-
- # Set and get a member value via shared pointer (like operator->).
- ptrToInteger.setValue(150)
- self.assertEqual(ptrToInteger.value(), 150)
-
- # Set and get a member field via shared pointer (like operator->).
- ptrToInteger.m_int = 100
- self.assertEqual(ptrToInteger.m_int, 100)
-
- # Pass smart pointer as argument to a method, return value is the value of m_int of
- # passed Integer inside the smart pointer.
- result = o.takeSharedPtrToInteger(ptrToInteger)
- self.assertEqual(result, 100)
-
- # Make a copy of the shared pointer, integer count should not change.
- ptrToInteger2 = copy(ptrToInteger)
- self.assertEqual(integerCount(), 2)
-
- # Delete the first shared pointer, integer count should not change because the second
- # one still has a reference.
- del ptrToInteger
- self.assertEqual(integerCount(), 2)
-
- # Delete the second smart pointer, integer should be deleted.
- del ptrToInteger2
- self.assertEqual(objCount(), 1)
- self.assertEqual(integerCount(), 1)
-
- # Delete the original object which was used to create the integer.
- del o
- self.assertEqual(objCount(), 0)
- self.assertEqual(integerCount(), 0)
-
- def testConstIntegerSmartPointer(self):
- # Uncomment to see more debug info about creation of objects and ref counts.
- # Registry.getInstance().setShouldPrint(True)
-
- # Create Obj.
- o = Obj()
- ptrToConstInteger = o.giveSharedPtrToConstInteger()
- self.assertEqual(ptrToConstInteger.m_int, 456)
- result = o.takeSharedPtrToConstInteger(ptrToConstInteger)
- self.assertEqual(result, 456)
- self.assertEqual(ptrToConstInteger.value(), 456)
-
- def testSmartPointersWithNamespace(self):
- # Create the main object
- o = Obj()
- self.assertEqual(objCount(), 1)
-
- # Create a shared pointer to an Integer together with an Integer.
- ptrToInteger = o.giveSharedPtrToInteger2()
- self.assertEqual(objCount(), 1)
- self.assertEqual(integerCount(), 2)
-
- integer = ptrToInteger.data()
- self.assertTrue(integer)
-
- def testListOfSmartPointers(self):
- # Create the main object
- o = Obj()
-
- # Create a list of shared objects
- ptrToObjList = o.giveSharedPtrToObjList(10)
- self.assertEqual(len(ptrToObjList), 10)
- self.assertEqual(objCount(), 11)
-
- # Remove one from the list
- ptrToObjList.pop()
- self.assertEqual(len(ptrToObjList), 9)
- self.assertEqual(objCount(), 10)
-
- # clear and delete all objects in the list
- ptrToObjList.clear()
- self.assertEqual(len(ptrToObjList), 0)
- self.assertEqual(objCount(), 1)
-
- def testInvalidParameter(self):
- # Create Obj.
- o = Obj()
- # Create a shared pointer to an Obj together with an Obj.
- ptrToObj = o.giveSharedPtrToObj()
- try:
- ptrToObj.typo
- self.assertFail()
- except AttributeError as error:
- self.assertEqual(error.args[0], "'smart.SharedPtr_Obj' object has no attribute 'typo'")
-
-
-if __name__ == '__main__':
- unittest.main()