aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/tests/samplebinding/modifications_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken2/tests/samplebinding/modifications_test.py')
-rw-r--r--sources/shiboken2/tests/samplebinding/modifications_test.py234
1 files changed, 0 insertions, 234 deletions
diff --git a/sources/shiboken2/tests/samplebinding/modifications_test.py b/sources/shiboken2/tests/samplebinding/modifications_test.py
deleted file mode 100644
index e9a1eaf7f..000000000
--- a/sources/shiboken2/tests/samplebinding/modifications_test.py
+++ /dev/null
@@ -1,234 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-#############################################################################
-##
-## 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 method modifications performed as described on type system. '''
-
-import unittest
-
-from sample import Modifications, Point, ByteArray
-
-class ExtModifications(Modifications):
- def __init__(self):
- Modifications.__init__(self)
- self.multiplier = 3.0
- self.increment = 10.0
-
- def name(self):
- return 'ExtModifications'
-
- def differenceOfPointCoordinates(self, point):
- ok, res = Modifications.differenceOfPointCoordinates(self, point)
- return ok, res * self.multiplier + self.increment
-
-
-class ModificationsTest(unittest.TestCase):
- '''Test cases for method modifications performed as described on type system. '''
-
- def setUp(self):
- self.mods = Modifications()
-
- def tearDown(self):
- del self.mods
-
- def testClassMembersAvailability(self):
- '''Test if Modified class really have the expected members.'''
- expected_members = set(['OverloadedModFunc', 'OverloadedNone',
- 'Overloaded_ibiP', 'Overloaded_ibib',
- 'Overloaded_ibid', 'Overloaded_ibii',
- 'calculateArea', 'doublePlus', 'increment',
- 'multiplyPointCoordsPlusValue', 'name',
- 'pointToPair', 'overloaded', 'power',
- 'timesTen'])
- self.assertTrue(expected_members.issubset(dir(Modifications)))
-
- def testRenamedMethodAvailability(self):
- '''Test if Modification class really have renamed the 'className' virtual method to 'name'.'''
- self.assertTrue('className' not in dir(Modifications))
- self.assertTrue('name' in dir(Modifications))
-
- def testReimplementationOfRenamedVirtualMethod(self):
- '''Test if class inheriting from Modification class have the reimplementation of renamed virtual method called.'''
- em = ExtModifications()
- self.assertEqual(self.mods.name(), 'Modifications')
- self.assertEqual(em.name(), 'ExtModifications')
-
- def testRegularMethodRenaming(self):
- '''Test if Modifications::cppMultiply was correctly renamed to calculateArea.'''
- self.assertTrue('cppMultiply' not in dir(Modifications))
- self.assertTrue('calculateArea' in dir(Modifications))
- self.assertEqual(self.mods.calculateArea(3, 6), 3 * 6)
-
- def testRegularMethodRemoval(self):
- '''Test if 'Modifications::exclusiveCppStuff' was removed from Python bindings.'''
- self.assertTrue('exclusiveCppStuff' not in dir(Modifications))
-
- def testArgumentRemoval(self):
- '''Test if second argument of Modifications::doublePlus(int, int) was removed.'''
- self.assertRaises(TypeError, self.mods.doublePlus, 3, 7)
- self.assertEqual(self.mods.doublePlus(7), 14)
-
- def testDefaultValueRemoval(self):
- '''Test if default value was removed from first argument of Modifications::increment(int).'''
- self.assertRaises(TypeError, self.mods.increment)
- self.assertEqual(self.mods.increment(7), 8)
-
- def testDefaultValueReplacement(self):
- '''Test if default values for both arguments of Modifications::power(int, int) were modified.'''
- # original default values: int power(int base = 1, int exponent = 0);
- self.assertNotEqual(self.mods.power(4), 1)
- # modified default values: int power(int base = 2, int exponent = 1);
- self.assertEqual(self.mods.power(), 2)
- self.assertEqual(self.mods.power(3), 3)
- self.assertEqual(self.mods.power(5, 3), 5**3)
-
- def testSetNewDefaultValue(self):
- '''Test if default value was correctly set to 10 for first argument of Modifications::timesTen(int).'''
- self.assertEqual(self.mods.timesTen(7), 70)
- self.assertEqual(self.mods.timesTen(), 100)
-
- def testArgumentRemovalAndReturnTypeModificationWithTypesystemTemplates1(self):
- '''Test modifications to method signature and return value using type system templates (case 1).'''
- result, ok = self.mods.pointToPair(Point(2, 5))
- self.assertEqual(type(ok), bool)
- self.assertEqual(type(result), tuple)
- self.assertEqual(len(result), 2)
- self.assertEqual(type(result[0]), float)
- self.assertEqual(type(result[1]), float)
- self.assertEqual(result[0], 2.0)
- self.assertEqual(result[1], 5.0)
-
- def testArgumentRemovalAndReturnTypeModificationWithTypesystemTemplates2(self):
- '''Test modifications to method signature and return value using type system templates (case 2).'''
- result, ok = self.mods.multiplyPointCoordsPlusValue(Point(2, 5), 4.1)
- self.assertEqual(type(ok), bool)
- self.assertEqual(type(result), float)
- self.assertEqual(result, 14.1)
-
- def testOverloadedMethodModifications(self):
- '''Tests modifications to an overloaded method'''
- # overloaded(int, bool[removed], int, double)
- self.assertEqual(self.mods.overloaded(1, 2, 3.1), Modifications.Overloaded_ibid)
- # overloaded(int, bool, int[removed,default=321], int)
- self.assertEqual(self.mods.overloaded(1, True, 2), Modifications.Overloaded_ibii)
- # the others weren't modified
- self.assertEqual(self.mods.overloaded(1, True, 2, False), Modifications.Overloaded_ibib)
- self.assertEqual(self.mods.overloaded(1, False, 2, Point(3, 4)), Modifications.Overloaded_ibiP)
- self.assertRaises(TypeError, self.mods.overloaded, 1, True, Point(2, 3), Point(4, 5))
- self.assertEqual(self.mods.over(1, True, Point(2, 3), Point(4, 5)), Modifications.Overloaded_ibPP)
-
- def testPointArrayModification(self):
- points = (Point(1, 1), Point(2, 2))
- summedPoint = Point(1, 1) + Point(2, 2)
- self.assertEqual(self.mods.sumPointArray(points), summedPoint)
-
- def testTypeSystemVariableReplacementInFunctionModification(self):
- ba = ByteArray('12345')
- self.assertEqual(self.mods.getSize(ba), len(ba))
- self.assertEqual(self.mods.getSize(ba, 20), 20)
-
- def testNoNulPointerTag(self):
- point = Point(12, 34)
- self.assertEqual(self.mods.sumPointCoordinates(point), 12 + 34)
- self.assertRaises(TypeError, self.mods.sumPointCoordinates, None)
-
- def testNonConversionRuleForArgumentWithDefaultValue(self):
- status, obj = self.mods.nonConversionRuleForArgumentWithDefaultValue()
- self.assertTrue(status)
- self.assertEqual(obj, self.mods.getObject())
- self.assertEqual(obj.objectName(), 'MyObject')
-
- def testInjectCodeWithConversionVariableForUserPrimitive(self):
- self.assertTrue(Modifications.invertBoolean(False))
- self.assertFalse(Modifications.invertBoolean(True))
-
- def testConversionRuleForReturnType(self):
- x, y = 11, 2
- diff = float(abs(x - y))
- point = Point(x, y)
-
- ok, res = self.mods.differenceOfPointCoordinates(point)
- self.assertTrue(isinstance(ok, bool))
- self.assertTrue(isinstance(res, float))
- self.assertEqual(res, diff)
-
- ok, res = self.mods.callDifferenceOfPointCoordinates(point)
- self.assertTrue(isinstance(ok, bool))
- self.assertTrue(isinstance(res, float))
- self.assertEqual(res, diff)
-
- ok, res = self.mods.differenceOfPointCoordinates(None)
- self.assertTrue(isinstance(ok, bool))
- self.assertTrue(isinstance(res, float))
- self.assertEqual(res, 0.0)
-
- ok, res = self.mods.callDifferenceOfPointCoordinates(None)
- self.assertTrue(isinstance(ok, bool))
- self.assertTrue(isinstance(res, float))
- self.assertEqual(res, 0.0)
-
- def testConversionRuleForReturnTypeOnExtendedClass(self):
- x, y = 11, 2
- diff = float(abs(x - y))
- point = Point(x, y)
- em = ExtModifications()
-
- ok, res = em.differenceOfPointCoordinates(point)
- self.assertTrue(isinstance(ok, bool))
- self.assertTrue(isinstance(res, float))
- self.assertEqual(res, diff * em.multiplier + em.increment)
-
- ok, res = em.callDifferenceOfPointCoordinates(point)
- self.assertTrue(isinstance(ok, bool))
- self.assertTrue(isinstance(res, float))
- self.assertEqual(res, diff * em.multiplier + em.increment)
-
- ok, res = em.differenceOfPointCoordinates(None)
- self.assertTrue(isinstance(ok, bool))
- self.assertTrue(isinstance(res, float))
- self.assertEqual(res, em.increment)
-
- ok, res = em.callDifferenceOfPointCoordinates(None)
- self.assertTrue(isinstance(ok, bool))
- self.assertTrue(isinstance(res, float))
- self.assertEqual(res, em.increment)
-
- def testDefaultValueModifications(self):
- # PSYIDE-1095: setEnumValue() has the default value modified to
- # calling defaultEnumValue() which returns Modifications.TestEnumValue2.
- # This used to generated broken code since defaultEnumValue() was
- # qualified by the enum scope.
- modifications = Modifications()
- modifications.setEnumValue()
- self.assertEqual(modifications.enumValue(), Modifications.TestEnumValue2)
-
-
-if __name__ == '__main__':
- unittest.main()