aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken6/tests/samplebinding/voidholder_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken6/tests/samplebinding/voidholder_test.py')
-rw-r--r--sources/shiboken6/tests/samplebinding/voidholder_test.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/sources/shiboken6/tests/samplebinding/voidholder_test.py b/sources/shiboken6/tests/samplebinding/voidholder_test.py
new file mode 100644
index 000000000..186cb473e
--- /dev/null
+++ b/sources/shiboken6/tests/samplebinding/voidholder_test.py
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+'''Test case for a class that holds a void pointer.'''
+
+import os
+import sys
+import unittest
+
+from pathlib import Path
+sys.path.append(os.fspath(Path(__file__).resolve().parents[1]))
+from shiboken_paths import init_paths
+init_paths()
+
+from sample import VoidHolder, Point
+from shiboken6 import Shiboken
+
+
+class VoidHolderTest(unittest.TestCase):
+ '''Test case for void pointer manipulation.'''
+
+ def testGetVoidPointerFromCppAndPutsOnVoidHolder(self):
+ '''Passes a void pointer created in C++ to be kept by VoidHolder.'''
+ voidptr = VoidHolder.gimmeMeSomeVoidPointer()
+ voidholder = VoidHolder(voidptr)
+ self.assertEqual(voidptr, voidholder.voidPointer())
+
+ def testPassVoidPointerAsArgument(self):
+ '''Passes a void pointer created in C++ as an argument to a function.'''
+ voidptr = VoidHolder.gimmeMeSomeVoidPointer()
+ voidHolder = VoidHolder()
+ returnValue = voidHolder.takeVoidPointer(voidptr)
+ self.assertEqual(returnValue, voidptr)
+
+ def testPutRandomObjectInsideVoidHolder(self):
+ '''Passes a C++ pointer for an object created in Python to be kept by VoidHolder.'''
+ obj = Point(1, 2)
+ voidholder = VoidHolder(obj)
+ self.assertEqual(Shiboken.getCppPointer(obj)[0], int(voidholder.voidPointer()))
+
+ def testGetNoneObjectFromVoidHolder(self):
+ '''A VoidHolder created without parameters returns a NULL pointer
+ that should be converted to a Python None.'''
+ voidholder = VoidHolder()
+ self.assertEqual(voidholder.voidPointer(), None)
+
+
+if __name__ == '__main__':
+ unittest.main()