diff options
author | Lauro Neto <lauro.neto@openbossa.org> | 2009-12-14 20:54:42 -0300 |
---|---|---|
committer | Lauro Neto <lauro.neto@openbossa.org> | 2009-12-16 21:14:24 -0300 |
commit | 9e6100816e6f000375d1ef2b3ec134ee7bc90fca (patch) | |
tree | 0512c406910a8962d8225db0f6b114f11364e163 /tests/signals | |
parent | d345245c9d61815829242951e1c5282d4d335919 (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.py | 21 | ||||
-rw-r--r-- | tests/signals/multiple_connections_test.py | 53 |
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() - |