diff options
Diffstat (limited to 'sources/shiboken6/tests/samplebinding/sample_test.py')
-rw-r--r-- | sources/shiboken6/tests/samplebinding/sample_test.py | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/sources/shiboken6/tests/samplebinding/sample_test.py b/sources/shiboken6/tests/samplebinding/sample_test.py new file mode 100644 index 000000000..19b2f708d --- /dev/null +++ b/sources/shiboken6/tests/samplebinding/sample_test.py @@ -0,0 +1,76 @@ +#!/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 cases for libsample bindings module''' + +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() + +import sample + + +class ModuleTest(unittest.TestCase): + '''Test case for module and global functions''' + + def testAddedFunctionAtModuleLevel(self): + '''Calls function added to module from type system description.''' + str1 = 'Foo' + self.assertEqual(sample.multiplyString(str1, 3), str1 * 3) + self.assertEqual(sample.multiplyString(str1, 0), str1 * 0) + + def testAddedFunctionWithVarargs(self): + '''Calls function that receives varargs added to module from type system description.''' + self.assertEqual(sample.countVarargs(1), 0) + self.assertEqual(sample.countVarargs(1, 2), 1) + self.assertEqual(sample.countVarargs(1, 2, 3, 'a', 'b', 4, (5, 6)), 6) + + def testSampleComparisonOpInNamespace(self): + s1 = sample.sample.sample(10) + s2 = sample.sample.sample(10) + self.assertEqual(s1, s2) + + def testConstant(self): + self.assertEqual(sample.sample.INT_CONSTANT, 42) + + def testStringFunctions(self): + # Test plain ASCII, UCS1 and UCS4 encoding which have different + # representations in the PyUnicode objects. + for t1 in ["ascii", "Ümläut", "😀"]: + expected = t1 + t1 + self.assertEqual(sample.addStdStrings(t1, t1), expected) + self.assertEqual(sample.addStdWStrings(t1, t1), expected) + + def testNullPtrT(self): + sample.testNullPtrT(None) + self.assertRaises(TypeError, sample.testNullPtrT, 42) + + def testRValueRefsWithValueTypes(self): + """Passing value types by rvalue refs: For value types, nothing should + happen since the argument is copied in the call and the copy is + moved from.""" + polygon = sample.Polygon() + polygon.addPoint(sample.Point(1, 2)) + polygon.addPoint(sample.Point(3, 4)) + point_count = len(polygon.points()) + self.assertEqual(point_count, sample.takePolygon(polygon)) + + def testRValueRefsWithObjectTypes(self): + """Passing object types by rvalue refs: The underlying object should + be moved from.""" + o = sample.ObjectType() + object_name = "Name" + o.setObjectName(object_name) + self.assertEqual(len(object_name), sample.takeObjectType(o)) + # o should be moved from, name is now empty + self.assertEqual(len(o.objectName()), 0) + + +if __name__ == '__main__': + unittest.main() |