示例#1
0
 def testSetGetAttro(self):
     modifications = Modifications()
     self.assertFalse(modifications.wasSetAttroCalled())
     setattr(modifications, 'Foo', 'Bar')
     self.assertTrue(modifications.wasSetAttroCalled())
     self.assertEqual(getattr(modifications, 'Foo'), 'Bar')
     self.assertTrue(modifications.wasGetAttroCalled())
示例#2
0
 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)
 def setUp(self):
     self.mods = Modifications()
class ArgumentModificationsTest(unittest.TestCase):
    '''Test cases for method arguments modifications performed as described on typesystem.'''
    def setUp(self):
        self.mods = Modifications()

    def tearDown(self):
        del self.mods

    def testArgRemoval0(self):
        '''Tests argument removal modifications on Modifications.argRemoval0.'''
        # void [-> PyObject*] argRemoval0(int, bool, int = 123 [removed, new val = 321], int = 456)
        # code-injection: returns tuple with received parameters plus removed ones
        a0, a1, a2 = 1, True, 2
        self.assertEqual(self.mods.argRemoval0(a0, a1), (a0, a1, 321, 456))
        self.assertEqual(self.mods.argRemoval0(a0, a1, a2), (a0, a1, 321, a2))
        # the other wasn't modified
        # void argRemoval0(int, bool, int, bool)
        self.assertEqual(self.mods.argRemoval0(0, False, 0, False), None)

    def testArgRemoval1(self):
        '''Tests argument removal modifications on Modifications.argRemoval1.'''
        # void [-> PyObject*] argRemoval1(int, bool, Point = Point(1, 2) [removed], Point = Point(3, 4) [removed], int = 333)
        # code-injection: returns tuple with received parameters plus removed ones
        a0, a1, a2 = 1, True, 2
        self.assertEqual(self.mods.argRemoval1(a0, a1),
                         (a0, a1, Point(1, 2), Point(3, 4), 333))
        self.assertEqual(self.mods.argRemoval1(a0, a1, a2),
                         (a0, a1, Point(1, 2), Point(3, 4), a2))
        # the other wasn't modified
        # void argRemoval1(int, bool, int, bool)
        self.assertEqual(self.mods.argRemoval1(0, False, 0, False), None)

    def testArgRemoval2(self):
        '''Tests argument removal modifications on Modifications.argRemoval2.'''
        # void [-> PyObject*] argRemoval2(int, bool, Point = Point(1, 2) [removed], Point = Point(3, 4) [removed], int = 333)
        # code-injection: returns tuple with received parameters plus removed ones
        a0, a1, a2 = 1, True, 2
        self.assertEqual(self.mods.argRemoval2(a0, a1),
                         (a0, a1, Point(1, 2), Point(3, 4), 333))
        self.assertEqual(self.mods.argRemoval2(a0, a1, a2),
                         (a0, a1, Point(1, 2), Point(3, 4), a2))

    def testArgRemoval3(self):
        '''Tests argument removal modifications on Modifications.argRemoval3.'''
        # void [-> PyObject*] argRemoval3(int, Point = Point(1, 2) [removed], bool = true, Point = Point(3, 4) [removed], int = 333)
        # code-injection: returns tuple with received parameters plus removed ones
        a0, a1, a2 = 1, True, 2
        self.assertEqual(self.mods.argRemoval3(a0),
                         (a0, Point(1, 2), True, Point(3, 4), 333))
        self.assertEqual(self.mods.argRemoval3(a0, a1),
                         (a0, Point(1, 2), a1, Point(3, 4), 333))
        self.assertEqual(self.mods.argRemoval3(a0, a1, a2),
                         (a0, Point(1, 2), a1, Point(3, 4), a2))

    def testArgRemoval4(self):
        '''Tests argument removal modifications on Modifications.argRemoval4.'''
        # void [-> PyObject*] argRemoval4(int, Point [removed, new val = Point(6, 9)], bool, Point = Point(3, 4) [removed], int = 333)
        # code-injection: returns tuple with received parameters plus removed ones
        a0, a1, a2 = 1, True, 2
        self.assertRaises(TypeError, self.mods.argRemoval4, a0)
        self.assertEqual(self.mods.argRemoval4(a0, a1),
                         (a0, Point(6, 9), a1, Point(3, 4), 333))
        self.assertEqual(self.mods.argRemoval4(a0, a1, a2),
                         (a0, Point(6, 9), a1, Point(3, 4), a2))

    def testArgRemoval5(self):
        '''Tests argument removal modifications on Modifications.argRemoval5.'''
        # void [-> PyObject*] argRemoval5(int [removed, new val = 100], bool,
        #                                 Point = Point(1, 2) [removed],
        #                                 Point = Point(3, 4) [removed], int = 333)
        # code-injection: returns tuple with received parameters plus removed ones
        a0, a1, a2 = True, 2, True
        self.assertEqual(self.mods.argRemoval5(a0),
                         (100, a0, Point(1, 2), Point(3, 4), 333))
        self.assertEqual(self.mods.argRemoval5(a0, a1),
                         (100, a0, Point(1, 2), Point(3, 4), a1))
        # void [-> PyObject*] argRemoval5(int [removed, new val = 200], bool, int, bool)
        # code-injection: returns tuple with received parameters plus removed ones
        self.assertEqual(self.mods.argRemoval5(a0, a1, a2), (200, a0, a1, a2))
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 differenceOfPointCoordinates(self, point):
     ok, res = Modifications.differenceOfPointCoordinates(self, point)
     return ok, res * self.multiplier + self.increment
 def __init__(self):
     Modifications.__init__(self)
     self.multiplier = 3.0
     self.increment = 10.0
 def testInjectCodeWithConversionVariableForUserPrimitive(self):
     self.assertTrue(Modifications.invertBoolean(False))
     self.assertFalse(Modifications.invertBoolean(True))
 def setUp(self):
     self.mods = Modifications()
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.assert_(expected_members.issubset(dir(Modifications)))

    def testRenamedMethodAvailability(self):
        '''Test if Modification class really have renamed the 'className' virtual method to 'name'.'''
        self.assert_('className' not in dir(Modifications))
        self.assert_('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.assert_('cppMultiply' not in dir(Modifications))
        self.assert_('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.assert_('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.assert_(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 differenceOfPointCoordinates(self, point):
     ok, res = Modifications.differenceOfPointCoordinates(self, point)
     return ok, res * self.multiplier + self.increment
 def __init__(self):
     Modifications.__init__(self)
     self.multiplier = 3.0
     self.increment = 10.0
 def testInjectCodeWithConversionVariableForUserPrimitive(self):
     self.assertTrue(Modifications.invertBoolean(False))
     self.assertFalse(Modifications.invertBoolean(True))
class ArgumentModificationsTest(unittest.TestCase):
    '''Test cases for method arguments modifications performed as described on typesystem.'''

    def setUp(self):
        self.mods = Modifications()

    def tearDown(self):
        del self.mods

    def testArgRemoval0(self):
        '''Tests argument removal modifications on Modifications.argRemoval0.'''
        # void [-> PyObject*] argRemoval0(int, bool, int = 123 [removed, new val = 321], int = 456)
        # code-injection: returns tuple with received parameters plus removed ones
        a0, a1, a2 = 1, True, 2
        self.assertEqual(self.mods.argRemoval0(a0, a1), (a0, a1, 321, 456))
        self.assertEqual(self.mods.argRemoval0(a0, a1, a2), (a0, a1, 321, a2))
        # the other wasn't modified
        # void argRemoval0(int, bool, int, bool)
        self.assertEqual(self.mods.argRemoval0(0, False, 0, False), None)

    def testArgRemoval1(self):
        '''Tests argument removal modifications on Modifications.argRemoval1.'''
        # void [-> PyObject*] argRemoval1(int, bool, Point = Point(1, 2) [removed], Point = Point(3, 4) [removed], int = 333)
        # code-injection: returns tuple with received parameters plus removed ones
        a0, a1, a2 = 1, True, 2
        self.assertEqual(self.mods.argRemoval1(a0, a1), (a0, a1, Point(1, 2), Point(3, 4), 333))
        self.assertEqual(self.mods.argRemoval1(a0, a1, a2), (a0, a1, Point(1, 2), Point(3, 4), a2))
        # the other wasn't modified
        # void argRemoval1(int, bool, int, bool)
        self.assertEqual(self.mods.argRemoval1(0, False, 0, False), None)

    def testArgRemoval2(self):
        '''Tests argument removal modifications on Modifications.argRemoval2.'''
        # void [-> PyObject*] argRemoval2(int, bool, Point = Point(1, 2) [removed], Point = Point(3, 4) [removed], int = 333)
        # code-injection: returns tuple with received parameters plus removed ones
        a0, a1, a2 = 1, True, 2
        self.assertEqual(self.mods.argRemoval2(a0, a1), (a0, a1, Point(1, 2), Point(3, 4), 333))
        self.assertEqual(self.mods.argRemoval2(a0, a1, a2), (a0, a1, Point(1, 2), Point(3, 4), a2))

    def testArgRemoval3(self):
        '''Tests argument removal modifications on Modifications.argRemoval3.'''
        # void [-> PyObject*] argRemoval3(int, Point = Point(1, 2) [removed], bool = true, Point = Point(3, 4) [removed], int = 333)
        # code-injection: returns tuple with received parameters plus removed ones
        a0, a1, a2 = 1, True, 2
        self.assertEqual(self.mods.argRemoval3(a0), (a0, Point(1, 2), True, Point(3, 4), 333))
        self.assertEqual(self.mods.argRemoval3(a0, a1), (a0, Point(1, 2), a1, Point(3, 4), 333))
        self.assertEqual(self.mods.argRemoval3(a0, a1, a2), (a0, Point(1, 2), a1, Point(3, 4), a2))

    def testArgRemoval4(self):
        '''Tests argument removal modifications on Modifications.argRemoval4.'''
        # void [-> PyObject*] argRemoval4(int, Point [removed, new val = Point(6, 9)], bool, Point = Point(3, 4) [removed], int = 333)
        # code-injection: returns tuple with received parameters plus removed ones
        a0, a1, a2 = 1, True, 2
        self.assertRaises(TypeError, self.mods.argRemoval4, a0)
        self.assertEqual(self.mods.argRemoval4(a0, a1), (a0, Point(6, 9), a1, Point(3, 4), 333))
        self.assertEqual(self.mods.argRemoval4(a0, a1, a2), (a0, Point(6, 9), a1, Point(3, 4), a2))

    def testArgRemoval5(self):
        '''Tests argument removal modifications on Modifications.argRemoval5.'''
        # void [-> PyObject*] argRemoval5(int [removed, new val = 100], bool,
        #                                 Point = Point(1, 2) [removed],
        #                                 Point = Point(3, 4) [removed], int = 333)
        # code-injection: returns tuple with received parameters plus removed ones
        a0, a1, a2 = True, 2, True
        self.assertEqual(self.mods.argRemoval5(a0), (100, a0, Point(1, 2), Point(3, 4), 333))
        self.assertEqual(self.mods.argRemoval5(a0, a1), (100, a0, Point(1, 2), Point(3, 4), a1))
        # void [-> PyObject*] argRemoval5(int [removed, new val = 200], bool, int, bool)
        # code-injection: returns tuple with received parameters plus removed ones
        self.assertEqual(self.mods.argRemoval5(a0, a1, a2), (200, a0, a1, a2))
示例#15
0
 def __init__(self):
     Modifications.__init__(self)