From a9636d7481facd786a236d5624110de9fd5fdd6c Mon Sep 17 00:00:00 2001 From: Marcelo Lira Date: Thu, 10 Feb 2011 10:55:13 -0300 Subject: Added test for overload decision situation involving inheritance. --- tests/libsample/objectmodel.h | 6 ++++++ tests/samplebinding/decisor_test.py | 11 ++++++++++- tests/samplebinding/typesystem_sample.xml | 1 + 3 files changed, 17 insertions(+), 1 deletion(-) 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 @@ + -- cgit v1.2.3