aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorHugo Parente Lima <hugo.pl@gmail.com>2011-05-17 16:34:08 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:54:23 -0300
commit952f9f0bda958afa36421c6af828f55f643a3deb (patch)
tree73ea5825f48defad774d8e87c75c087a4bc0ae83 /tests
parentc27dceaaab0d35aa0227157d6901ab96faf78e93 (diff)
Fix bug 686 - "Request to make Q[Mutex|Read|Write]Locker context managers"
Reviewer: Marcelo Lira <marcelo.lira@openbossa.org> Luciano Wolf <luciano.wolf@openbossa.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/QtCore/CMakeLists.txt1
-rw-r--r--tests/QtCore/bug_686.py85
2 files changed, 86 insertions, 0 deletions
diff --git a/tests/QtCore/CMakeLists.txt b/tests/QtCore/CMakeLists.txt
index 84d0ad017..e49e3909a 100644
--- a/tests/QtCore/CMakeLists.txt
+++ b/tests/QtCore/CMakeLists.txt
@@ -7,6 +7,7 @@ PYSIDE_TEST(bug_505.py)
PYSIDE_TEST(bug_515.py)
PYSIDE_TEST(bug_606.py)
PYSIDE_TEST(bug_656.py)
+PYSIDE_TEST(bug_686.py)
PYSIDE_TEST(bug_699.py)
PYSIDE_TEST(bug_706.py)
PYSIDE_TEST(bug_723.py)
diff --git a/tests/QtCore/bug_686.py b/tests/QtCore/bug_686.py
new file mode 100644
index 000000000..97ead98f5
--- /dev/null
+++ b/tests/QtCore/bug_686.py
@@ -0,0 +1,85 @@
+import unittest
+from PySide.QtCore import *
+
+class MyWriteThread(QThread):
+ def __init__(self, lock):
+ QThread.__init__(self)
+ self.lock = lock
+ self.started = False
+ self.canQuit = False
+
+ def run(self):
+ self.started = True
+ while not self.lock.tryLockForWrite():
+ pass
+ self.canQuit = True
+
+class MyReadThread(QThread):
+ def __init__(self, lock):
+ QThread.__init__(self)
+ self.lock = lock
+ self.started = False
+ self.canQuit = False
+
+ def run(self):
+ self.started = True
+ while not self.lock.tryLockForRead():
+ pass
+ self.canQuit = True
+
+class MyMutexedThread(QThread):
+ def __init__(self, mutex):
+ QThread.__init__(self)
+ self.mutex = mutex
+ self.started = False
+ self.canQuit = False
+
+ def run(self):
+ self.started = True
+ while not self.mutex.tryLock():
+ pass
+ self.canQuit = True
+
+class TestQMutex (unittest.TestCase):
+
+ def testReadLocker(self):
+ lock = QReadWriteLock()
+ thread = MyWriteThread(lock)
+
+ with QReadLocker(lock):
+ thread.start()
+ while not thread.started:
+ pass
+ self.assertFalse(thread.canQuit)
+
+ thread.wait()
+ self.assertTrue(thread.canQuit)
+
+ def testWriteLocker(self):
+ lock = QReadWriteLock()
+ thread = MyReadThread(lock)
+
+ with QWriteLocker(lock):
+ thread.start()
+ while not thread.started:
+ pass
+ self.assertFalse(thread.canQuit)
+
+ thread.wait()
+ self.assertTrue(thread.canQuit)
+
+ def testMutexLocker(self):
+ mutex = QMutex()
+ thread = MyMutexedThread(mutex)
+
+ with QMutexLocker(mutex):
+ thread.start()
+ while not thread.started:
+ pass
+ self.assertFalse(thread.canQuit)
+
+ thread.wait()
+ self.assertTrue(thread.canQuit)
+
+if __name__ == '__main__':
+ unittest.main()