summaryrefslogtreecommitdiffstats
path: root/tests/auto/qreadlocker
diff options
context:
space:
mode:
authorHolger Ihrig <holger.ihrig@nokia.com>2011-08-26 12:56:14 +0200
committerHolger Ihrig <holger.ihrig@nokia.com>2011-09-01 12:54:58 +0200
commit82e715b2770258fa2c536aeae1f46c7fccdcdecf (patch)
treea4b9135effe2109b164f622314a6ffac6198a8f8 /tests/auto/qreadlocker
parentc9a5ccb268b5e2b2ce0743989c44f808b538ba9b (diff)
Moving relevant tests to corelib/thread
Task-number: QTBUG-21066 Change-Id: Ia16fa8961f1a73f4da6709197b5dd9929c16583f Reviewed-on: http://codereview.qt.nokia.com/3663 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com> Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com>
Diffstat (limited to 'tests/auto/qreadlocker')
-rw-r--r--tests/auto/qreadlocker/.gitignore1
-rw-r--r--tests/auto/qreadlocker/qreadlocker.pro4
-rw-r--r--tests/auto/qreadlocker/tst_qreadlocker.cpp231
3 files changed, 0 insertions, 236 deletions
diff --git a/tests/auto/qreadlocker/.gitignore b/tests/auto/qreadlocker/.gitignore
deleted file mode 100644
index 2539362670..0000000000
--- a/tests/auto/qreadlocker/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-tst_qreadlocker
diff --git a/tests/auto/qreadlocker/qreadlocker.pro b/tests/auto/qreadlocker/qreadlocker.pro
deleted file mode 100644
index ee533070a7..0000000000
--- a/tests/auto/qreadlocker/qreadlocker.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qreadlocker.cpp
-QT = core
-CONFIG += parallel_test
diff --git a/tests/auto/qreadlocker/tst_qreadlocker.cpp b/tests/auto/qreadlocker/tst_qreadlocker.cpp
deleted file mode 100644
index 3ec9f1cb25..0000000000
--- a/tests/auto/qreadlocker/tst_qreadlocker.cpp
+++ /dev/null
@@ -1,231 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QtTest/QtTest>
-
-#include <QCoreApplication>
-#include <QReadLocker>
-#include <QSemaphore>
-#include <QThread>
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-class tst_QReadLockerThread : public QThread
-{
-public:
- QReadWriteLock lock;
- QSemaphore semaphore, testSemaphore;
-
- void waitForTest()
- {
- semaphore.release();
- testSemaphore.acquire();
- }
-};
-
-class tst_QReadLocker : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QReadLocker();
- ~tst_QReadLocker();
-
- tst_QReadLockerThread *thread;
-
- void waitForThread()
- {
- thread->semaphore.acquire();
- }
- void releaseThread()
- {
- thread->testSemaphore.release();
- }
-
-private slots:
- void scopeTest();
- void unlockAndRelockTest();
- void lockerStateTest();
-};
-
-tst_QReadLocker::tst_QReadLocker()
-{
-}
-
-tst_QReadLocker::~tst_QReadLocker()
-{
-}
-
-void tst_QReadLocker::scopeTest()
-{
- class ScopeTestThread : public tst_QReadLockerThread
- {
- public:
- void run()
- {
- waitForTest();
-
- {
- QReadLocker locker(&lock);
- waitForTest();
- }
-
- waitForTest();
- }
- };
-
- thread = new ScopeTestThread;
- thread->start();
-
- waitForThread();
- // lock should be unlocked before entering the scope that creates the QReadLocker
- QVERIFY(thread->lock.tryLockForWrite());
- thread->lock.unlock();
- releaseThread();
-
- waitForThread();
- // lock should be locked by the QReadLocker
- QVERIFY(!thread->lock.tryLockForWrite());
- releaseThread();
-
- waitForThread();
- // lock should be unlocked when the QReadLocker goes out of scope
- QVERIFY(thread->lock.tryLockForWrite());
- thread->lock.unlock();
- releaseThread();
-
- QVERIFY(thread->wait());
-
- delete thread;
- thread = 0;
-}
-
-
-void tst_QReadLocker::unlockAndRelockTest()
-{
- class UnlockAndRelockThread : public tst_QReadLockerThread
- {
- public:
- void run()
- {
- QReadLocker locker(&lock);
-
- waitForTest();
-
- locker.unlock();
-
- waitForTest();
-
- locker.relock();
-
- waitForTest();
- }
- };
-
- thread = new UnlockAndRelockThread;
- thread->start();
-
- waitForThread();
- // lock should be locked by the QReadLocker
- QVERIFY(!thread->lock.tryLockForWrite());
- releaseThread();
-
- waitForThread();
- // lock has been explicitly unlocked via QReadLocker
- QVERIFY(thread->lock.tryLockForWrite());
- thread->lock.unlock();
- releaseThread();
-
- waitForThread();
- // lock has been explicitly relocked via QReadLocker
- QVERIFY(!thread->lock.tryLockForWrite());
- releaseThread();
-
- QVERIFY(thread->wait());
-
- delete thread;
- thread = 0;
-}
-
-void tst_QReadLocker::lockerStateTest()
-{
- class LockerStateThread : public tst_QReadLockerThread
- {
- public:
- void run()
- {
- {
- QReadLocker locker(&lock);
- locker.relock();
- locker.unlock();
-
- waitForTest();
- }
-
- waitForTest();
- }
- };
-
- thread = new LockerStateThread;
- thread->start();
-
- waitForThread();
- // even though we relock() after creating the QReadLocker, it shouldn't lock the lock more than once
- QVERIFY(thread->lock.tryLockForWrite());
- thread->lock.unlock();
- releaseThread();
-
- waitForThread();
- // if we call QReadLocker::unlock(), its destructor should do nothing
- QVERIFY(thread->lock.tryLockForWrite());
- thread->lock.unlock();
- releaseThread();
-
- QVERIFY(thread->wait());
-
- delete thread;
- thread = 0;
-}
-
-QTEST_MAIN(tst_QReadLocker)
-#include "tst_qreadlocker.moc"