aboutsummaryrefslogtreecommitdiffstats
path: root/tests/signals/lambda_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/signals/lambda_test.py')
-rw-r--r--tests/signals/lambda_test.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/tests/signals/lambda_test.py b/tests/signals/lambda_test.py
new file mode 100644
index 000000000..9a76ced09
--- /dev/null
+++ b/tests/signals/lambda_test.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+
+'''Connecting lambda to signals'''
+
+import unittest
+
+from PySide.QtCore import QObject, SIGNAL
+from PySide.QtGui import QApplication, QSpinBox, QPushButton
+
+from helper import UsesQApplication
+
+class Dummy(QObject):
+ def __init__(self, *args):
+ super(Dummy, self).__init__(*args)
+
+class BasicCase(unittest.TestCase):
+
+ def testSimplePythonSignalNoArgs(self):
+ #Connecting a lambda to a simple python signal without arguments
+ obj = Dummy()
+ QObject.connect(obj, SIGNAL('foo()'), lambda : setattr(obj, 'called', True))
+ obj.emit(SIGNAL('foo()'))
+ self.assert_(obj.called)
+
+ def testSimplePythonSignal(self):
+ #Connecting a lambda to a simple python signal witharguments
+ obj = Dummy()
+ arg = 42
+ QObject.connect(obj, SIGNAL('foo(int)'), lambda x : setattr(obj, 'arg', 42))
+ obj.emit(SIGNAL('foo(int)'), arg)
+ self.assertEqual(obj.arg, arg)
+
+class QtSigLambda(UsesQApplication):
+
+ qapplication = True
+
+ def testButton(self):
+ #Connecting a lambda to a QPushButton.clicked()
+ obj = QPushButton('label')
+ QObject.connect(obj, SIGNAL('clicked()'), lambda : setattr(obj, 'called', True))
+ obj.click()
+ self.assert_(obj.called)
+
+ def testSpinButton(self):
+ #Connecting a lambda to a QPushButton.clicked()
+ obj = QSpinBox()
+ arg = 444
+ QObject.connect(obj, SIGNAL('valueChanged(int)'), lambda x: setattr(obj, 'arg', 444))
+ obj.setValue(444)
+ self.assertEqual(obj.arg, arg)
+
+if __name__ == '__main__':
+ unittest.main()