summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/qthread/tst_qthread.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/auto/qthread/tst_qthread.cpp b/tests/auto/qthread/tst_qthread.cpp
index c1b2a95..4a8baa0 100644
--- a/tests/auto/qthread/tst_qthread.cpp
+++ b/tests/auto/qthread/tst_qthread.cpp
@@ -102,6 +102,7 @@ private slots:
void adoptedThreadSetPriority();
void adoptedThreadExit();
void adoptedThreadExec();
+ void adoptThreadExitWithActiveTimer();
void adoptedThreadFinished();
void adoptedThreadExecFinished();
void adoptMultipleThreads();
@@ -1010,6 +1011,32 @@ void tst_QThread::adoptMultipleThreadsOverlap()
QVERIFY(!QTestEventLoop::instance().timeout());
QCOMPARE(int(recorder.activationCount), numThreads);
}
+
+void adoptedThreadActiveTimerFunction(void *)
+{
+ QThread * const adoptedThread = QThread::currentThread();
+ QEventLoop eventLoop(adoptedThread);
+
+ const int code = 1;
+ Exit_Object o;
+ o.thread = adoptedThread;
+ o.code = code;
+ QTimer::singleShot(100, &o, SLOT(slot()));
+
+ // create a timer that will still be active when the thread finishes
+ QTimer::singleShot(3000, &o, SLOT(slot()));
+
+ const int result = eventLoop.exec();
+ QCOMPARE(result, code);
+}
+
+void tst_QThread::adoptThreadExitWithActiveTimer()
+{
+ NativeThreadWrapper nativeThread;
+ nativeThread.start(adoptedThreadActiveTimerFunction);
+ nativeThread.join();
+}
+
void tst_QThread::stressTest()
{
#if defined(Q_OS_WINCE)