aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorRenato Filho <renato.filho@openbossa.org>2010-04-15 12:13:07 -0300
committerRenato Filho <renato.filho@openbossa.org>2010-04-16 16:52:19 -0300
commitde4a1a10b01f54ce03bc484f04f4294ba8b4d314 (patch)
treedc429c094b49ecdc1e345987c234043ed860650f /tests
parent2de4b9385917ff3d0616cf9967295d412f89297f (diff)
Fixed bug with refcount on PyObject args during signal/slot emission.
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org> Lauro Moura <lauro.neto@openbossa.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/signals/pysignal_test.py56
1 files changed, 51 insertions, 5 deletions
diff --git a/tests/signals/pysignal_test.py b/tests/signals/pysignal_test.py
index 5d4b09feb..7bb89a04e 100644
--- a/tests/signals/pysignal_test.py
+++ b/tests/signals/pysignal_test.py
@@ -1,6 +1,6 @@
import unittest
-from PySide.QtCore import QObject, SIGNAL, SLOT
+from PySide.QtCore import QObject, SIGNAL, SLOT, Qt
try:
from PySide.QtGui import QSpinBox, QApplication, QWidget
@@ -18,18 +18,64 @@ class Dummy(QObject):
def callDummy(self):
self.emit(SIGNAL("dummy(PyObject)"), "PyObject")
+ def callDummy2(self):
+ lst = []
+ lst.append("item1")
+ lst.append("item2")
+ lst.append("item3")
+ self.emit(SIGNAL("dummy2(PyObject, PyObject)"), "PyObject0", lst)
-class PyObjectType(unittest.TestCase):
+
+class PyObjectType(UsesQApplication):
def mySlot(self, arg):
self.assertEqual(arg, "PyObject")
self.called = True
+ self.callCount += 1
- def testType(self):
- self.called = False
+ def mySlot2(self, arg0, arg1):
+ self.assertEqual(arg0, "PyObject0")
+ self.assertEqual(arg1[0], "item1")
+ self.assertEqual(arg1[1], "item2")
+ self.assertEqual(arg1[2], "item3")
+ self.callCount += 1
+ if self.running:
+ self.app.quit()
+
+ def setUp(self):
+ super(PyObjectType, self).setUp()
+ self.callCount = 0
+ self.running = False
+
+ def testWithOneArg(self):
o = Dummy()
o.connect(SIGNAL("dummy(PyObject)"), self.mySlot)
o.callDummy()
- self.assert_(self.called)
+ self.assertEqual(self.callCount, 1)
+
+ def testWithTwoArg(self):
+ o = Dummy()
+ o.connect(SIGNAL("dummy2(PyObject,PyObject)"), self.mySlot2)
+ o.callDummy2()
+ self.assertEqual(self.callCount, 1)
+
+ def testAsyncSignal(self):
+ self.called = False
+ self.running = True
+ o = Dummy()
+ o.connect(SIGNAL("dummy2(PyObject,PyObject)"), self.mySlot2, Qt.QueuedConnection)
+ o.callDummy2()
+ self.app.exec_()
+ self.assertEqual(self.callCount, 1)
+
+ def testTwice(self):
+ self.called = False
+ self.running = True
+ o = Dummy()
+ o.connect(SIGNAL("dummy2(PyObject,PyObject)"), self.mySlot2, Qt.QueuedConnection)
+ o.callDummy2()
+ o.callDummy2()
+ self.app.exec_()
+ self.assertEqual(self.callCount, 2)
class PythonSigSlot(unittest.TestCase):
def setUp(self):