diff options
author | Renato Filho <renato.filho@openbossa.org> | 2010-06-07 14:43:45 -0300 |
---|---|---|
committer | Renato Filho <renato.filho@openbossa.org> | 2010-06-07 16:57:11 -0300 |
commit | ab918abc1e103e0ca86939f7d057e8a44ac8a4ef (patch) | |
tree | 53c6f57d089dcf5e145d766b1ceef704714046d8 /tests/QtCore/duck_punching_test.py | |
parent | 471486732b03cbb42b884158604a59d5a18e8a35 (diff) |
Created new unittest model.
Separete unittest for module.
Only run unittest for compiled modules.
Reviewer: Marcelo Lira <marcelo.lira@openbossa.org>,
Luciano Wolf <luciano.wolf@openbossa.org>
Diffstat (limited to 'tests/QtCore/duck_punching_test.py')
-rw-r--r-- | tests/QtCore/duck_punching_test.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/QtCore/duck_punching_test.py b/tests/QtCore/duck_punching_test.py new file mode 100644 index 000000000..e20c0c1b1 --- /dev/null +++ b/tests/QtCore/duck_punching_test.py @@ -0,0 +1,56 @@ +#!/usr/bin/python + +'''Test case for duck punching new implementations of C++ virtual methods into object instances.''' + +import unittest +import types +from PySide.QtCore import QObject, QEvent +from helper import UsesQCoreApplication + +class Duck(QObject): + def __init__(self): + QObject.__init__(self) + def childEvent(self, event): + QObject.childEvent(self, event) + +class TestDuckPunchingOnQObjectInstance(UsesQCoreApplication): + '''Test case for duck punching new implementations of C++ virtual methods into object instances.''' + + def setUp(self): + #Acquire resources + self.duck_childEvent_called = False + UsesQCoreApplication.setUp(self) + + def tearDown(self): + #Release resources + del self.duck_childEvent_called + UsesQCoreApplication.tearDown(self) + + + def testChildEventMonkeyPatch(self): + #Test if the new childEvent injected on QObject instance is called from C++ + parent = QObject() + def childEvent(obj, event): + self.duck_childEvent_called = True + QObject.childEvent(obj, event) + parent.childEvent = types.MethodType(childEvent, parent, QObject) + child = QObject() + child.setParent(parent) + self.assert_(self.duck_childEvent_called) + + def testChildEventMonkeyPatchWithInheritance(self): + #Test if the new childEvent injected on a QObject's extension class instance is called from C++ + parent = Duck() + def childEvent(obj, event): + QObject.childEvent(obj, event) + self.duck_childEvent_called = True + child = QObject() + child.setParent(parent) + parent.childEvent = types.MethodType(childEvent, parent, QObject) + child = QObject() + child.setParent(parent) + self.assert_(self.duck_childEvent_called) + +if __name__ == '__main__': + unittest.main() + |