Added all original pyside unit tests to the shiboken version.
This commit is contained in:
parent
aa12538d63
commit
9af36fbb64
160 changed files with 6616 additions and 12 deletions
65
tests/signals/multiple_connections_test.py
Normal file
65
tests/signals/multiple_connections_test.py
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
|
||||
import unittest
|
||||
import random
|
||||
|
||||
from PySide.QtCore import QObject, SIGNAL
|
||||
from PySide.QtGui import QPushButton, QSpinBox, QApplication
|
||||
|
||||
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
|
||||
|
||||
def run_many(self, sender, signal, receivers, args=None):
|
||||
"""Utility method to connect a list of receivers to a signal.
|
||||
sender - QObject that will emit the signal
|
||||
signal - string with the signal signature
|
||||
receivers - list of BasicPySlotCase instances
|
||||
args - tuple with the arguments to be sent.
|
||||
"""
|
||||
|
||||
if args is None:
|
||||
args = tuple()
|
||||
|
||||
for rec in receivers:
|
||||
rec.setUp()
|
||||
QObject.connect(sender, SIGNAL(signal), rec.cb)
|
||||
rec.args = tuple(args)
|
||||
|
||||
sender.emit(SIGNAL(signal), *args)
|
||||
|
||||
for rec in receivers:
|
||||
self.assert_(rec.called)
|
||||
|
||||
def testButtonClick(self):
|
||||
"""Multiple connections to QPushButton.clicked()"""
|
||||
sender = QPushButton('button')
|
||||
receivers = [BasicPySlotCase() for x in range(30)]
|
||||
self.run_many(sender, 'clicked()', receivers)
|
||||
|
||||
def testSpinBoxValueChanged(self):
|
||||
"""Multiple connections to QSpinBox.valueChanged(int)"""
|
||||
for test in random_gen(30):
|
||||
sender = QSpinBox()
|
||||
#FIXME if number of receivers if higher than 50, segfaults
|
||||
receivers = [BasicPySlotCase() for x in range(10)]
|
||||
self.run_many(sender, 'valueChanged(int)', receivers, (test,))
|
||||
|
||||
def testPythonSignal(self):
|
||||
"""Multiple connections to a python signal (short-circuit)"""
|
||||
class Dummy(QObject):
|
||||
pass
|
||||
|
||||
for test in random_gen(30):
|
||||
sender = Dummy()
|
||||
receivers = [BasicPySlotCase() for x in range(10)]
|
||||
self.run_many(sender, 'foobar', receivers, (test, ))
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue