From da8c292b69c53f0a16bc405ed590ce5d4ecacf9b Mon Sep 17 00:00:00 2001 From: Marcelo Lira Date: Thu, 20 Jan 2011 15:57:48 -0300 Subject: Added test cases for signal emission. Signals are emitted from C++ and Python. Reviewer: Luciano Wolf Lauro Moura --- tests/pysidetest/CMakeLists.txt | 2 + tests/pysidetest/signalemissionfrompython_test.py | 79 +++++++++++++++++++++++ tests/pysidetest/signalwithdefaultvalue_test.py | 67 +++++++++++++++++++ tests/pysidetest/testobject.cpp | 12 ++++ tests/pysidetest/testobject.h | 4 ++ 5 files changed, 164 insertions(+) create mode 100644 tests/pysidetest/signalemissionfrompython_test.py create mode 100644 tests/pysidetest/signalwithdefaultvalue_test.py (limited to 'tests') diff --git a/tests/pysidetest/CMakeLists.txt b/tests/pysidetest/CMakeLists.txt index 0ce9da9bb..75fbb6e47 100644 --- a/tests/pysidetest/CMakeLists.txt +++ b/tests/pysidetest/CMakeLists.txt @@ -76,5 +76,7 @@ PYSIDE_TEST(delegatecreateseditor_test.py) PYSIDE_TEST(homonymoussignalandmethod_test.py) PYSIDE_TEST(list_signal_test.py) PYSIDE_TEST(modelview_test.py) +PYSIDE_TEST(signalwithdefaultvalue_test.py) +PYSIDE_TEST(signalemissionfrompython_test.py) PYSIDE_TEST(version_test.py) diff --git a/tests/pysidetest/signalemissionfrompython_test.py b/tests/pysidetest/signalemissionfrompython_test.py new file mode 100644 index 000000000..9d130cb4a --- /dev/null +++ b/tests/pysidetest/signalemissionfrompython_test.py @@ -0,0 +1,79 @@ +#!/usr/bin/python + +import unittest +from testbinding import TestObject +from PySide.QtCore import QObject, SIGNAL + +'''Tests the behaviour of signals with default values when emitted from Python.''' + +class SignalEmissionFromPython(unittest.TestCase): + + def setUp(self): + self.obj1 = TestObject(0) + self.obj2 = TestObject(0) + self.one_called = 0 + self.two_called = 0 + + def tearDown(self): + del self.obj1 + del self.obj2 + del self.one_called + del self.two_called + + def testConnectNewStyleEmitVoidSignal(self): + def callbackOne(): + self.one_called += 1 + self.obj2.signalWithDefaultValue.emit() + def callbackTwo(): + self.two_called += 1 + self.obj1.signalWithDefaultValue.connect(callbackOne) + self.obj2.signalWithDefaultValue.connect(callbackTwo) + self.obj1.emitSignalWithDefaultValue_void() + self.obj2.emitSignalWithDefaultValue_void() + self.assertEqual(self.one_called, 1) + self.assertEqual(self.two_called, 2) + + def testConnectOldStyleEmitVoidSignal(self): + def callbackOne(): + self.one_called += 1 + self.obj2.signalWithDefaultValue.emit() + def callbackTwo(): + self.two_called += 1 + QObject.connect(self.obj1, SIGNAL('signalWithDefaultValue()'), callbackOne) + QObject.connect(self.obj2, SIGNAL('signalWithDefaultValue()'), callbackTwo) + self.obj1.emitSignalWithDefaultValue_void() + self.obj2.emitSignalWithDefaultValue_void() + self.assertEqual(self.one_called, 1) + self.assertEqual(self.two_called, 2) + + def testConnectNewStyleEmitBoolSignal(self): + def callbackOne(): + self.one_called += 1 + self.obj2.signalWithDefaultValue[bool].emit(True) + def callbackTwo(): + self.two_called += 1 + self.obj1.signalWithDefaultValue.connect(callbackOne) + self.obj2.signalWithDefaultValue.connect(callbackTwo) + self.obj1.emitSignalWithDefaultValue_void() + self.obj2.emitSignalWithDefaultValue_void() + self.assertEqual(self.one_called, 1) + self.assertEqual(self.two_called, 2) + + def testConnectOldStyleEmitBoolSignal(self): + def callbackOne(): + self.one_called += 1 + self.obj2.signalWithDefaultValue[bool].emit(True) + def callbackTwo(): + self.two_called += 1 + QObject.connect(self.obj1, SIGNAL('signalWithDefaultValue()'), callbackOne) + QObject.connect(self.obj2, SIGNAL('signalWithDefaultValue()'), callbackTwo) + self.obj1.emitSignalWithDefaultValue_void() + self.obj2.emitSignalWithDefaultValue_void() + self.assertEqual(self.one_called, 1) + self.assertEqual(self.two_called, 2) + + + +if __name__ == '__main__': + unittest.main() + diff --git a/tests/pysidetest/signalwithdefaultvalue_test.py b/tests/pysidetest/signalwithdefaultvalue_test.py new file mode 100644 index 000000000..3a18bb715 --- /dev/null +++ b/tests/pysidetest/signalwithdefaultvalue_test.py @@ -0,0 +1,67 @@ +#!/usr/bin/python + +import unittest +from testbinding import TestObject +from PySide.QtCore import QObject, SIGNAL + +'''Tests the behaviour of signals with default values.''' + +class SignalWithDefaultValueTest(unittest.TestCase): + + def setUp(self): + self.obj = TestObject(0) + self.void_called = False + self.bool_called = False + + def tearDown(self): + del self.obj + del self.void_called + del self.bool_called + + def testConnectNewStyleEmitVoidSignal(self): + def callbackVoid(): + self.void_called = True + def callbackBool(value): + self.bool_called = True + self.obj.signalWithDefaultValue.connect(callbackVoid) + self.obj.signalWithDefaultValue[bool].connect(callbackBool) + self.obj.emitSignalWithDefaultValue_void() + self.assert_(self.void_called) + self.assert_(self.bool_called) + + def testConnectNewStyleEmitBoolSignal(self): + def callbackVoid(): + self.void_called = True + def callbackBool(value): + self.bool_called = True + self.obj.signalWithDefaultValue.connect(callbackVoid) + self.obj.signalWithDefaultValue[bool].connect(callbackBool) + self.obj.emitSignalWithDefaultValue_bool() + self.assert_(self.void_called) + self.assert_(self.bool_called) + + def testConnectOldStyleEmitVoidSignal(self): + def callbackVoid(): + self.void_called = True + def callbackBool(value): + self.bool_called = True + QObject.connect(self.obj, SIGNAL('signalWithDefaultValue()'), callbackVoid) + QObject.connect(self.obj, SIGNAL('signalWithDefaultValue(bool)'), callbackBool) + self.obj.emitSignalWithDefaultValue_void() + self.assert_(self.void_called) + self.assert_(self.bool_called) + + def testConnectOldStyleEmitBoolSignal(self): + def callbackVoid(): + self.void_called = True + def callbackBool(value): + self.bool_called = True + QObject.connect(self.obj, SIGNAL('signalWithDefaultValue()'), callbackVoid) + QObject.connect(self.obj, SIGNAL('signalWithDefaultValue(bool)'), callbackBool) + self.obj.emitSignalWithDefaultValue_bool() + self.assert_(self.void_called) + self.assert_(self.bool_called) + +if __name__ == '__main__': + unittest.main() + diff --git a/tests/pysidetest/testobject.cpp b/tests/pysidetest/testobject.cpp index 717c4e3cd..6911334ff 100644 --- a/tests/pysidetest/testobject.cpp +++ b/tests/pysidetest/testobject.cpp @@ -12,3 +12,15 @@ TestObject::emitStaticMethodDoubleSignal() emit staticMethodDouble(); } +void +TestObject::emitSignalWithDefaultValue_void() +{ + emit signalWithDefaultValue(); +} + +void +TestObject::emitSignalWithDefaultValue_bool() +{ + emit signalWithDefaultValue(true); +} + diff --git a/tests/pysidetest/testobject.h b/tests/pysidetest/testobject.h index 65506b94e..8dcb4c06d 100644 --- a/tests/pysidetest/testobject.h +++ b/tests/pysidetest/testobject.h @@ -19,11 +19,15 @@ public: void emitIdValueSignal(); void emitStaticMethodDoubleSignal(); + void emitSignalWithDefaultValue_void(); + void emitSignalWithDefaultValue_bool(); + signals: void idValue(int newValue); void justASignal(); void staticMethodDouble(); void childrenChanged(const QList&); + void signalWithDefaultValue(bool value = false); private: int m_idValue; -- cgit v1.2.3