aboutsummaryrefslogtreecommitdiffstats
path: root/tests/signals
diff options
context:
space:
mode:
authorLauro Neto <lauro.neto@openbossa.org>2009-12-14 20:54:42 -0300
committerLauro Neto <lauro.neto@openbossa.org>2009-12-16 21:14:24 -0300
commit9e6100816e6f000375d1ef2b3ec134ee7bc90fca (patch)
tree0512c406910a8962d8225db0f6b114f11364e163 /tests/signals
parentd345245c9d61815829242951e1c5282d4d335919 (diff)
Adding no-qtgui tests for lambda and multiple sig
Lambda tests using QProcess Multiple connections using QProcess and split into separate test cases
Diffstat (limited to 'tests/signals')
-rw-r--r--tests/signals/lambda_test.py21
-rw-r--r--tests/signals/multiple_connections_test.py53
2 files changed, 67 insertions, 7 deletions
diff --git a/tests/signals/lambda_test.py b/tests/signals/lambda_test.py
index 9a76ced09..137a2d9a6 100644
--- a/tests/signals/lambda_test.py
+++ b/tests/signals/lambda_test.py
@@ -2,9 +2,10 @@
'''Connecting lambda to signals'''
+import sys
import unittest
-from PySide.QtCore import QObject, SIGNAL
+from PySide.QtCore import QObject, SIGNAL, QProcess
from PySide.QtGui import QApplication, QSpinBox, QPushButton
from helper import UsesQApplication
@@ -34,6 +35,24 @@ class QtSigLambda(UsesQApplication):
qapplication = True
+ def testNoArgs(self):
+ '''Connecting a lambda to a signal without arguments'''
+ proc = QProcess()
+ dummy = Dummy()
+ QObject.connect(proc, SIGNAL('started()'), lambda : setattr(dummy, 'called', True))
+ proc.start(sys.executable, ['-c', '""'])
+ proc.waitForFinished()
+ self.assert_(dummy.called)
+
+ def testWithArgs(self):
+ '''Connecting a lambda to a signal with arguments'''
+ proc = QProcess()
+ dummy = Dummy()
+ QObject.connect(proc, SIGNAL('finished(int)'), lambda x: setattr(dummy, 'called', x))
+ proc.start(sys.executable, ['-c', '""'])
+ proc.waitForFinished()
+ self.assertEqual(dummy.called, proc.exitCode())
+
def testButton(self):
#Connecting a lambda to a QPushButton.clicked()
obj = QPushButton('label')
diff --git a/tests/signals/multiple_connections_test.py b/tests/signals/multiple_connections_test.py
index 169ecff70..c3ad98f70 100644
--- a/tests/signals/multiple_connections_test.py
+++ b/tests/signals/multiple_connections_test.py
@@ -1,20 +1,27 @@
+import sys
import unittest
import random
from functools import partial
-from PySide.QtCore import QObject, SIGNAL
-from PySide.QtGui import QPushButton, QSpinBox, QApplication
+from PySide.QtCore import QObject, SIGNAL, QProcess
+
+try:
+ from PySide.QtGui import QPushButton, QSpinBox
+except ImportError:
+ QPushButton = object
+ QSpinBox = object
+
+from helper import BasicPySlotCase, UsesQApplication, UsesQCoreApplication
-from helper import BasicPySlotCase, UsesQApplication
def random_gen(count=100, largest=99, lowest=0):
for i in range(count):
yield random.randint(lowest, largest)
-class MultipleSignalConnections(UsesQApplication):
- qapplication = True
+class MultipleSignalConnections(unittest.TestCase):
+ '''Base class for multiple signal connection testing'''
def run_many(self, sender, signal, emitter, receivers, args=None):
"""Utility method to connect a list of receivers to a signal.
@@ -38,6 +45,10 @@ class MultipleSignalConnections(UsesQApplication):
for rec in receivers:
self.assert_(rec.called)
+
+class QtGuiMultipleSlots(UsesQApplication, MultipleSignalConnections):
+ '''Multiple connections to QtGui signals'''
+
def testButtonClick(self):
"""Multiple connections to QPushButton.clicked()"""
sender = QPushButton('button')
@@ -53,8 +64,13 @@ class MultipleSignalConnections(UsesQApplication):
self.run_many(sender, 'valueChanged(int)', sender.setValue,
receivers, (test,))
+
+class PythonMultipleSlots(UsesQCoreApplication, MultipleSignalConnections):
+ '''Multiple connections to python signals'''
+
def testPythonSignal(self):
"""Multiple connections to a python signal (short-circuit)"""
+
class Dummy(QObject):
pass
@@ -64,6 +80,31 @@ class MultipleSignalConnections(UsesQApplication):
self.run_many(sender, 'foobar', partial(sender.emit,
SIGNAL('foobar')), receivers, (test, ))
+
+class QProcessMultipleSlots(UsesQCoreApplication, MultipleSignalConnections):
+ '''Multiple connections to QProcess signals'''
+
+ def testQProcessStarted(self):
+ '''Multiple connections to QProcess.started()'''
+ sender = QProcess()
+ receivers = [BasicPySlotCase() for x in range(10)]
+
+ def start_proc(*args):
+ sender.start(sys.executable, ['-c', '""'])
+ sender.waitForFinished()
+
+ self.run_many(sender, 'started()', start_proc, receivers)
+
+ def testQProcessFinished(self):
+ '''Multiple connections to QProcess.finished(int)'''
+ sender = QProcess()
+ receivers = [BasicPySlotCase() for x in range(10)]
+
+ def start_proc(*args):
+ sender.start(sys.executable, ['-c', '""'])
+ sender.waitForFinished()
+
+ self.run_many(sender, 'finished(int)', start_proc, receivers, (0,))
+
if __name__ == '__main__':
unittest.main()
-