aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2009-11-26 11:01:18 -0300
committerMarcelo Lira <marcelo.lira@openbossa.org>2009-11-26 11:25:01 -0300
commit736854dc7e64cb2bdcb8d765aace6ee51d8c1150 (patch)
tree1f907b67ee44caf16c4b0b56e78277a78d9c45de /tests
parent517d1c914879bcf243442aac4b393e8ee3c26ff9 (diff)
Python arguments are now checked for Python wrapper validity.
If the expected argument type has implicit conversions the type of the Python object is also checked. The invalidate-after-use test was moved from the ObjectType test to its own test file. Reviewed by Luciano Wolf <luciano.wolf@openbossa.org>
Diffstat (limited to 'tests')
-rwxr-xr-xtests/samplebinding/objecttype_test.py20
-rwxr-xr-xtests/samplebinding/ownership_invalidate_after_use_test.py66
2 files changed, 67 insertions, 19 deletions
diff --git a/tests/samplebinding/objecttype_test.py b/tests/samplebinding/objecttype_test.py
index c442ec7e8..958df1d59 100755
--- a/tests/samplebinding/objecttype_test.py
+++ b/tests/samplebinding/objecttype_test.py
@@ -29,18 +29,7 @@
import sys
import unittest
-from sample import ObjectType, Event, Str
-
-
-class ExtObjectType(ObjectType):
- def __init__(self):
- ObjectType.__init__(self)
- self.type_of_last_event = None
- self.last_event = None
- def event(self, event):
- self.last_event = event
- self.type_of_last_event = event.eventType()
- return True
+from sample import ObjectType, Str
class ObjectTypeTest(unittest.TestCase):
@@ -66,13 +55,6 @@ class ObjectTypeTest(unittest.TestCase):
o.setObjectName('object name')
self.assertEqual(str(o.objectName()), 'object name')
- def testInvalidateAfterUse(self):
- '''In ObjectType.event(Event*) the wrapper object created for Event must me marked as invalid after the method is called.'''
- o = ExtObjectType()
- o.causeEvent(Event.SOME_EVENT)
- self.assertEqual(o.type_of_last_event, Event.SOME_EVENT)
- self.assertRaises(RuntimeError, o.last_event.eventType)
-
if __name__ == '__main__':
unittest.main()
diff --git a/tests/samplebinding/ownership_invalidate_after_use_test.py b/tests/samplebinding/ownership_invalidate_after_use_test.py
new file mode 100755
index 000000000..5f9930e12
--- /dev/null
+++ b/tests/samplebinding/ownership_invalidate_after_use_test.py
@@ -0,0 +1,66 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# This file is part of the Shiboken Python Bindings Generator project.
+#
+# Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+#
+# Contact: PySide team <contact@pyside.org>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public License
+# version 2.1 as published by the Free Software Foundation. Please
+# review the following information to ensure the GNU Lesser General
+# Public License version 2.1 requirements will be met:
+# http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+# #
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301 USA
+
+'''Ownership tests for cases of invalidation of Python wrapper after use.'''
+
+import sys
+import unittest
+
+from sample import ObjectType, Event
+
+
+class ExtObjectType(ObjectType):
+ def __init__(self):
+ ObjectType.__init__(self)
+ self.type_of_last_event = None
+ self.last_event = None
+ def event(self, event):
+ self.last_event = event
+ self.type_of_last_event = event.eventType()
+ return True
+
+
+class OwnershipInvalidateAfterUseTest(unittest.TestCase):
+ '''Ownership tests for cases of invalidation of Python wrapper after use.'''
+
+ def testInvalidateAfterUse(self):
+ '''In ObjectType.event(Event*) the wrapper object created for Event must me marked as invalid after the method is called.'''
+ eot = ExtObjectType()
+ eot.causeEvent(Event.SOME_EVENT)
+ self.assertEqual(eot.type_of_last_event, Event.SOME_EVENT)
+ self.assertRaises(RuntimeError, eot.last_event.eventType)
+
+ def testObjectInvalidatedAfterUseAsParameter(self):
+ '''Tries to use wrapper invalidated after use as a parameter to another method.'''
+ eot = ExtObjectType()
+ ot = ObjectType()
+ eot.causeEvent(Event.ANY_EVENT)
+ self.assertEqual(eot.type_of_last_event, Event.ANY_EVENT)
+ self.assertRaises(RuntimeError, lambda : ot.event(eot.last_event))
+
+if __name__ == '__main__':
+ unittest.main()
+