summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/thread
diff options
context:
space:
mode:
authorKrzysztof Sommerfeld <krzysztof.sommerfeld@siili.com>2024-01-25 01:49:27 +0100
committerThiago Macieira <thiago.macieira@intel.com>2024-01-31 12:21:55 +0000
commitac6a9f9bfae88e21b3e589cc25e4632a69f67a50 (patch)
treea8d735d81765c276bee29ad70783708b0b8f18aa /tests/auto/corelib/thread
parentd4568bcfdbf17866436eae8d96ceb7ae035ecf5d (diff)
Add cxx11_future in QPromise tests and disable it for VxWorks
cxx11_future flag should be disabled for VxWorks. VxWorks still does have some bugs related to this std features and some parts of code needs to be excluded. At least till the 24.03 VxWorks release as for now this is the expected release that should contain fixes. Task-number: QTBUG-115777 Change-Id: Ic652403697d727f4ae05ae7287ff8285075d3802 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'tests/auto/corelib/thread')
-rw-r--r--tests/auto/corelib/thread/qpromise/tst_qpromise.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/auto/corelib/thread/qpromise/tst_qpromise.cpp b/tests/auto/corelib/thread/qpromise/tst_qpromise.cpp
index bbac6e200e..2068915896 100644
--- a/tests/auto/corelib/thread/qpromise/tst_qpromise.cpp
+++ b/tests/auto/corelib/thread/qpromise/tst_qpromise.cpp
@@ -86,6 +86,7 @@ do { \
QFAIL("Test case " #test "(" #__VA_ARGS__ ") failed"); \
} while (false)
+#if QT_CONFIG(cxx11_future)
// std::thread-like wrapper that ensures that the thread is joined at the end of
// a scope to prevent potential std::terminate
struct ThreadWrapper
@@ -102,6 +103,7 @@ struct ThreadWrapper
t->wait();
}
};
+#endif
void tst_QPromise::promise()
{
@@ -342,6 +344,7 @@ void tst_QPromise::progress()
void tst_QPromise::addInThread()
{
+#if QT_CONFIG(cxx11_future)
const auto testAddResult = [] (auto promise, const auto &result) {
promise.start();
auto f = promise.future();
@@ -357,10 +360,12 @@ void tst_QPromise::addInThread()
RUN_TEST_FUNC(testAddResult, QPromise<int>(), 42);
RUN_TEST_FUNC(testAddResult, QPromise<QString>(), u8"42");
RUN_TEST_FUNC(testAddResult, QPromise<CopyOnlyType>(), CopyOnlyType{99});
+#endif
}
void tst_QPromise::addInThreadMoveOnlyObject()
{
+#if QT_CONFIG(cxx11_future)
QPromise<MoveOnlyType> promise;
promise.start();
auto f = promise.future();
@@ -372,10 +377,12 @@ void tst_QPromise::addInThreadMoveOnlyObject()
// Iterators wait for result first
for (auto& result : f)
QCOMPARE(result, MoveOnlyType{-11});
+#endif
}
void tst_QPromise::reportFromMultipleThreads()
{
+#if QT_CONFIG(cxx11_future)
QPromise<int> promise;
auto f = promise.future();
promise.start();
@@ -394,10 +401,12 @@ void tst_QPromise::reportFromMultipleThreads()
QVERIFY(std::find(expected.begin(), expected.end(), actual) != expected.end());
expected.removeOne(actual);
}
+#endif
}
void tst_QPromise::reportFromMultipleThreadsByMovedPromise()
{
+#if QT_CONFIG(cxx11_future)
QPromise<int> initialPromise;
auto f = initialPromise.future();
{
@@ -424,10 +433,12 @@ void tst_QPromise::reportFromMultipleThreadsByMovedPromise()
QVERIFY(std::find(expected.begin(), expected.end(), actual) != expected.end());
expected.removeOne(actual);
}
+#endif
}
void tst_QPromise::doNotCancelWhenFinished()
{
+#if QT_CONFIG(cxx11_future)
const auto testFinishedPromise = [] (auto promise) {
auto f = promise.future();
promise.start();
@@ -446,11 +457,13 @@ void tst_QPromise::doNotCancelWhenFinished()
RUN_TEST_FUNC(testFinishedPromise, QPromise<QString>());
RUN_TEST_FUNC(testFinishedPromise, QPromise<CopyOnlyType>());
RUN_TEST_FUNC(testFinishedPromise, QPromise<MoveOnlyType>());
+#endif
}
#ifndef QT_NO_EXCEPTIONS
void tst_QPromise::cancelWhenDestroyed()
{
+#if QT_CONFIG(cxx11_future)
QPromise<int> initialPromise;
auto f = initialPromise.future();
@@ -478,11 +491,13 @@ void tst_QPromise::cancelWhenDestroyed()
QVERIFY(std::find(expected.begin(), expected.end(), actual) != expected.end());
expected.removeOne(actual);
}
+#endif
}
#endif
void tst_QPromise::cancelWhenReassigned()
{
+#if QT_CONFIG(cxx11_future)
QPromise<int> promise;
auto f = promise.future();
promise.start();
@@ -496,6 +511,7 @@ void tst_QPromise::cancelWhenReassigned()
QCOMPARE(f.isFinished(), true);
QCOMPARE(f.isCanceled(), true);
+#endif
}
template <typename T>
@@ -614,6 +630,7 @@ void tst_QPromise::continuationsRunWhenFinished()
void tst_QPromise::finishWhenSwapped()
{
+#if QT_CONFIG(cxx11_future)
QPromise<int> promise1;
auto f1 = promise1.future();
promise1.start();
@@ -648,11 +665,13 @@ void tst_QPromise::finishWhenSwapped()
QCOMPARE(f2.resultAt(0), 1);
QCOMPARE(f2.resultAt(1), 2);
+#endif
}
template <typename T>
void testCancelWhenMoved()
{
+#if QT_CONFIG(cxx11_future)
QPromise<T> promise1;
auto f1 = promise1.future();
promise1.start();
@@ -678,6 +697,7 @@ void testCancelWhenMoved()
// Future #2 is explicitly finished inside thread
QCOMPARE(f2.isFinished(), true);
QCOMPARE(f2.isCanceled(), false);
+#endif
}
void tst_QPromise::cancelWhenMoved()
@@ -719,6 +739,7 @@ void tst_QPromise::waitUntilResumed()
void tst_QPromise::waitUntilCanceled()
{
+#if QT_CONFIG(cxx11_future)
QPromise<int> promise;
promise.start();
auto f = promise.future();
@@ -739,6 +760,7 @@ void tst_QPromise::waitUntilCanceled()
f.waitForFinished();
QCOMPARE(f.resultCount(), 0);
+#endif
}
// Below is a quick and dirty hack to make snippets a part of a test suite