Adding new-style signal/slot tests.
Based on Marcelo Lira's source code.
Reviewer: Hugo Parente Lima <hugo.lima@openbossa.org>,
Luciano Wolf <luciano.wolf@openbossa.org>
This commit is contained in:
parent
16809db86b
commit
9a8bc9c3d1
6 changed files with 254 additions and 0 deletions
27
tests/signals/ref01_test.py
Executable file
27
tests/signals/ref01_test.py
Executable file
|
|
@ -0,0 +1,27 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
from PySide.QtCore import QObject, Signal
|
||||||
|
|
||||||
|
class BoundAndUnboundSignalsTest(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.methods = set(('connect', 'disconnect', 'emit'))
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
del self.methods
|
||||||
|
|
||||||
|
def testUnboundSignal(self):
|
||||||
|
self.assertEqual(type(QObject.destroyed), Signal)
|
||||||
|
self.assertFalse(self.methods.issubset(dir(QObject.destroyed)))
|
||||||
|
|
||||||
|
def testBoundSignal(self):
|
||||||
|
obj = QObject()
|
||||||
|
self.assertNotEqual(type(obj.destroyed), Signal)
|
||||||
|
self.assert_(self.methods.issubset(dir(obj.destroyed)))
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
|
|
||||||
|
|
||||||
47
tests/signals/ref02_test.py
Executable file
47
tests/signals/ref02_test.py
Executable file
|
|
@ -0,0 +1,47 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
from PySide.QtCore import QCoreApplication, QTimeLine
|
||||||
|
from helper import UsesQCoreApplication
|
||||||
|
|
||||||
|
class NativeSignalsTest(UsesQCoreApplication):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
UsesQCoreApplication.setUp(self)
|
||||||
|
self.called = False
|
||||||
|
self.timeline = QTimeLine(100)
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
del self.called
|
||||||
|
del self.timeline
|
||||||
|
UsesQCoreApplication.tearDown(self)
|
||||||
|
|
||||||
|
def testSignalWithIntArgument(self):
|
||||||
|
|
||||||
|
def valueChangedSlot(value):
|
||||||
|
self.called = True
|
||||||
|
self.assertEqual(type(value), float)
|
||||||
|
self.app.quit()
|
||||||
|
|
||||||
|
self.timeline.valueChanged.connect(valueChangedSlot)
|
||||||
|
self.timeline.start()
|
||||||
|
|
||||||
|
self.app.exec_()
|
||||||
|
self.assert_(self.called)
|
||||||
|
|
||||||
|
def testSignalWithoutArguments(self):
|
||||||
|
|
||||||
|
def finishedSlot():
|
||||||
|
self.called = True
|
||||||
|
self.app.quit()
|
||||||
|
|
||||||
|
self.timeline.finished.connect(finishedSlot)
|
||||||
|
self.timeline.start()
|
||||||
|
|
||||||
|
self.app.exec_()
|
||||||
|
self.assert_(self.called)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
|
|
||||||
29
tests/signals/ref03_test.py
Executable file
29
tests/signals/ref03_test.py
Executable file
|
|
@ -0,0 +1,29 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
from sys import getrefcount
|
||||||
|
from PySide.QtCore import QObject
|
||||||
|
|
||||||
|
class DisconnectSignalsTest(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.emitter = QObject()
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
del self.emitter
|
||||||
|
|
||||||
|
def testConnectionRefCount(self):
|
||||||
|
|
||||||
|
def destroyedSlot():
|
||||||
|
pass
|
||||||
|
|
||||||
|
self.assertEqual(getrefcount(destroyedSlot), 2)
|
||||||
|
self.emitter.destroyed.connect(destroyedSlot)
|
||||||
|
self.assertEqual(getrefcount(destroyedSlot), 3)
|
||||||
|
self.emitter.destroyed.disconnect(destroyedSlot)
|
||||||
|
self.assertEqual(getrefcount(destroyedSlot), 2)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
|
|
||||||
56
tests/signals/ref04_test.py
Executable file
56
tests/signals/ref04_test.py
Executable file
|
|
@ -0,0 +1,56 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
from PySide.QtCore import QObject, Signal
|
||||||
|
|
||||||
|
class ExtQObject(QObject):
|
||||||
|
|
||||||
|
mySignal = Signal()
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
QObject.__init__(self)
|
||||||
|
|
||||||
|
|
||||||
|
class UserSignalTest(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.emitter = ExtQObject()
|
||||||
|
self.counter = 0
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
del self.emitter
|
||||||
|
del self.counter
|
||||||
|
|
||||||
|
def testConnectEmitDisconnect(self):
|
||||||
|
|
||||||
|
def slot():
|
||||||
|
self.counter += 1
|
||||||
|
|
||||||
|
self.emitter.mySignal.connect(slot)
|
||||||
|
|
||||||
|
self.assertEqual(self.counter, 0)
|
||||||
|
self.emitter.mySignal.emit()
|
||||||
|
self.assertEqual(self.counter, 1)
|
||||||
|
self.emitter.mySignal.emit()
|
||||||
|
self.assertEqual(self.counter, 2)
|
||||||
|
|
||||||
|
self.emitter.mySignal.disconnect(slot)
|
||||||
|
|
||||||
|
self.emitter.mySignal.emit()
|
||||||
|
self.assertEqual(self.counter, 2)
|
||||||
|
|
||||||
|
# def testConnectWithConfigureMethod(self):
|
||||||
|
#
|
||||||
|
# def slot():
|
||||||
|
# self.counter += 1
|
||||||
|
#
|
||||||
|
# self.emitter.pyqtConfigure(mySignal=slot)
|
||||||
|
# self.assertEqual(self.counter, 0)
|
||||||
|
# self.emitter.mySignal.emit()
|
||||||
|
# self.assertEqual(self.counter, 1)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
|
|
||||||
46
tests/signals/ref05_test.py
Executable file
46
tests/signals/ref05_test.py
Executable file
|
|
@ -0,0 +1,46 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
from PySide.QtCore import QObject, QCoreApplication, QTimeLine, Slot
|
||||||
|
from helper import UsesQCoreApplication
|
||||||
|
|
||||||
|
class ExtQObject(QObject):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
QObject.__init__(self)
|
||||||
|
self.counter = 0
|
||||||
|
|
||||||
|
@Slot('qreal')
|
||||||
|
def foo(self, value):
|
||||||
|
self.counter += 1
|
||||||
|
|
||||||
|
|
||||||
|
class UserSlotTest(UsesQCoreApplication):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
UsesQCoreApplication.setUp(self)
|
||||||
|
self.receiver = ExtQObject()
|
||||||
|
self.timeline = QTimeLine(100)
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
del self.timeline
|
||||||
|
del self.receiver
|
||||||
|
UsesQCoreApplication.tearDown(self)
|
||||||
|
|
||||||
|
def testUserSlot(self):
|
||||||
|
self.timeline.setUpdateInterval(10)
|
||||||
|
|
||||||
|
self.timeline.finished.connect(self.app.quit)
|
||||||
|
|
||||||
|
self.timeline.valueChanged.connect(self.receiver.foo)
|
||||||
|
self.timeline.start()
|
||||||
|
|
||||||
|
self.app.exec_()
|
||||||
|
|
||||||
|
self.assertEqual(self.receiver.counter, 10)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
|
|
||||||
49
tests/signals/ref06_test.py
Executable file
49
tests/signals/ref06_test.py
Executable file
|
|
@ -0,0 +1,49 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
from PySide.QtCore import QObject, QCoreApplication, QTimeLine, Signal, Slot
|
||||||
|
from helper import UsesQCoreApplication
|
||||||
|
|
||||||
|
class ExtQObject(QObject):
|
||||||
|
signalbetween = Signal('qreal')
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
QObject.__init__(self)
|
||||||
|
self.counter = 0
|
||||||
|
|
||||||
|
@Slot('qreal')
|
||||||
|
def foo(self, value):
|
||||||
|
self.counter += 1
|
||||||
|
|
||||||
|
|
||||||
|
class SignaltoSignalTest(UsesQCoreApplication):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
UsesQCoreApplication.setUp(self)
|
||||||
|
self.receiver = ExtQObject()
|
||||||
|
self.timeline = QTimeLine(100)
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
del self.timeline
|
||||||
|
del self.receiver
|
||||||
|
UsesQCoreApplication.tearDown(self)
|
||||||
|
|
||||||
|
def testSignaltoSignal(self):
|
||||||
|
self.timeline.setUpdateInterval(10)
|
||||||
|
|
||||||
|
self.timeline.finished.connect(self.app.quit)
|
||||||
|
|
||||||
|
self.timeline.valueChanged.connect(self.receiver.signalbetween)
|
||||||
|
self.receiver.signalbetween.connect(self.receiver.foo)
|
||||||
|
|
||||||
|
self.timeline.start()
|
||||||
|
|
||||||
|
self.app.exec_()
|
||||||
|
|
||||||
|
self.assertEqual(self.receiver.counter, 10)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue