aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2010-06-02 07:57:07 -0300
committerMarcelo Lira <marcelo.lira@openbossa.org>2010-06-02 15:41:07 -0300
commit7bc6f1512b1febc026d81917f33b1ea90d23fe24 (patch)
treec0328569c80bcd54022fbe3951802739deb580b0 /tests
parent47d4a1f545eb7f348e46d39230a73a1b465e57a4 (diff)
Fixes code generation for classes with private destructors.
This fix is specific for the cases when the "protected hack" is turned off. Also added some tests.
Diffstat (limited to 'tests')
-rw-r--r--tests/libsample/privatedtor.h3
-rwxr-xr-xtests/samplebinding/protected_test.py17
2 files changed, 20 insertions, 0 deletions
diff --git a/tests/libsample/privatedtor.h b/tests/libsample/privatedtor.h
index 2c206b26..73f7f4d8 100644
--- a/tests/libsample/privatedtor.h
+++ b/tests/libsample/privatedtor.h
@@ -52,6 +52,9 @@ public:
return m_instanciations;
}
+protected:
+ int protectedInstanceCalls() { return m_instanciations; }
+
private:
int m_instanciations;
diff --git a/tests/samplebinding/protected_test.py b/tests/samplebinding/protected_test.py
index efb0bedb..fa477c42 100755
--- a/tests/samplebinding/protected_test.py
+++ b/tests/samplebinding/protected_test.py
@@ -31,6 +31,7 @@ import unittest
from sample import ProtectedNonPolymorphic, ProtectedVirtualDestructor
from sample import ProtectedPolymorphic, ProtectedPolymorphicDaughter, ProtectedPolymorphicGrandDaughter
from sample import ProtectedEnumClass
+from sample import PrivateDtor
from sample import Point
class ExtendedProtectedPolymorphic(ProtectedPolymorphic):
@@ -242,6 +243,22 @@ class ProtectedEnumTest(unittest.TestCase):
self.assertEqual(obj.callPublicEnumMethod(ProtectedEnumClass.PublicItem1), ProtectedEnumClass.PublicItem0)
+class PrivateDtorProtectedMethodTest(unittest.TestCase):
+ '''Test cases for classes with private destructors and protected methods.'''
+
+ def testProtectedMethod(self):
+ '''Calls protected method of a class with a private destructor.'''
+ obj = PrivateDtor.instance()
+
+ self.assertEqual(type(obj), PrivateDtor)
+ self.assertEqual(obj.instanceCalls(), 1)
+ self.assertEqual(obj.instanceCalls(), obj.protectedInstanceCalls())
+
+ obj = PrivateDtor.instance()
+ self.assertEqual(obj.instanceCalls(), 2)
+ self.assertEqual(obj.instanceCalls(), obj.protectedInstanceCalls())
+
+
if __name__ == '__main__':
unittest.main()