diff options
-rw-r--r-- | tests/libsample/objectmodel.h | 6 | ||||
-rw-r--r-- | tests/samplebinding/decisor_test.py | 11 | ||||
-rw-r--r-- | tests/samplebinding/typesystem_sample.xml | 1 |
3 files changed, 17 insertions, 1 deletions
diff --git a/tests/libsample/objectmodel.h b/tests/libsample/objectmodel.h index 8c5dff729..8e350efb4 100644 --- a/tests/libsample/objectmodel.h +++ b/tests/libsample/objectmodel.h @@ -36,6 +36,12 @@ public: void setData(ObjectType* data); virtual ObjectType* data() const; + // The MethodCalled enum and related static methods were created to + // test bug #630 [http://bugs.openbossa.org/show_bug.cgi?id=630] + enum MethodCalled { ObjectTypeCalled, ObjectModelCalled }; + static MethodCalled receivesObjectTypeFamily(const ObjectType& object) { return ObjectModel::ObjectTypeCalled; } + static MethodCalled receivesObjectTypeFamily(const ObjectModel& object) { return ObjectModel::ObjectModelCalled; } + private: // The model holds only one piece of data. // (This is just a test after all.) diff --git a/tests/samplebinding/decisor_test.py b/tests/samplebinding/decisor_test.py index 458298c0c..cb442cd96 100644 --- a/tests/samplebinding/decisor_test.py +++ b/tests/samplebinding/decisor_test.py @@ -28,7 +28,7 @@ import unittest -from sample import SampleNamespace, Point +from sample import SampleNamespace, Point, ObjectType, ObjectModel class DecisorTest(unittest.TestCase): '''Test cases for the method overload decisor.''' @@ -46,6 +46,15 @@ class DecisorTest(unittest.TestCase): pt = Point() self.assertRaises(TypeError, SampleNamespace.forceDecisorSideB, 1, pt) + def testDecideCallWithInheritance(self): + '''Call methods overloads that receive parent and inheritor classes' instances.''' + objecttype = ObjectType() + objectmodel = ObjectModel() + self.assertEqual(ObjectModel.receivesObjectTypeFamily(objecttype), ObjectModel.ObjectTypeCalled) + self.assertNotEqual(ObjectModel.receivesObjectTypeFamily(objecttype), ObjectModel.ObjectModelCalled) + self.assertEqual(ObjectModel.receivesObjectTypeFamily(objectmodel), ObjectModel.ObjectModelCalled) + self.assertNotEqual(ObjectModel.receivesObjectTypeFamily(objectmodel), ObjectModel.ObjectTypeCalled) + if __name__ == '__main__': unittest.main() diff --git a/tests/samplebinding/typesystem_sample.xml b/tests/samplebinding/typesystem_sample.xml index b23e7f6db..b5ffb5703 100644 --- a/tests/samplebinding/typesystem_sample.xml +++ b/tests/samplebinding/typesystem_sample.xml @@ -259,6 +259,7 @@ </object-type> <object-type name="ObjectModel"> + <enum-type name="MethodCalled" /> <modify-function signature="data() const"> <modify-argument index="return"> <define-ownership class="native" owner="c++"/> |