aboutsummaryrefslogtreecommitdiffstats
path: root/tests/samplebinding/reference_test.py
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2009-08-27 01:01:06 -0300
committerMarcelo Lira <marcelo.lira@openbossa.org>2009-08-27 01:01:06 -0300
commit5ba896641df413f496e634ff5953c4d516157173 (patch)
tree267486511cc45f0b71c31f4cacf847c3e882bb39 /tests/samplebinding/reference_test.py
parent93d0d9b5e3178efb8e78fb1ec2c7a2b4ede02972 (diff)
updated sample library Reference class and unit tests with cases
of virtual methods that receive C++ references
Diffstat (limited to 'tests/samplebinding/reference_test.py')
-rwxr-xr-xtests/samplebinding/reference_test.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/samplebinding/reference_test.py b/tests/samplebinding/reference_test.py
index ed4c5cbc8..28e6feba4 100755
--- a/tests/samplebinding/reference_test.py
+++ b/tests/samplebinding/reference_test.py
@@ -7,6 +7,22 @@ import unittest
from sample import Reference
+class ExtendedReference(Reference):
+ def __init__(self):
+ Reference.__init__(self)
+ self.uses_reference_virtual_called = False
+ self.uses_const_reference_virtual_called = False
+ self.reference_inc = 1
+ self.const_reference_inc = 2
+
+ def usesReferenceVirtual(self, ref, inc):
+ self.uses_reference_virtual_called = True
+ return ref.objId() + inc + self.reference_inc
+
+ def usesConstReferenceVirtual(self, ref, inc):
+ self.uses_const_reference_virtual_called = True
+ return ref.objId() + inc + self.const_reference_inc
+
class ReferenceTest(unittest.TestCase):
'''Test case for methods that receive references to objects.'''
@@ -22,6 +38,23 @@ class ReferenceTest(unittest.TestCase):
r = Reference(objId)
self.assertEqual(Reference.usesConstReference(r), objId)
+ def testReimplementedVirtualMethodCallWithReferenceParameter(self):
+ '''Test if a Python override of a virtual method with a reference parameter is correctly called from C++.'''
+ inc = 9
+ objId = 123
+ r = Reference(objId)
+ er = ExtendedReference()
+ result = er.callUsesReferenceVirtual(r, inc)
+ self.assertEqual(result, objId + inc + er.reference_inc)
+
+ def testReimplementedVirtualMethodCallWithConstReferenceParameter(self):
+ '''Test if a Python override of a virtual method with a const reference parameter is correctly called from C++.'''
+ inc = 9
+ objId = 123
+ r = Reference(objId)
+ er = ExtendedReference()
+ result = er.callUsesConstReferenceVirtual(r, inc)
+ self.assertEqual(result, objId + inc + er.const_reference_inc)
if __name__ == '__main__':
unittest.main()