summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/thread/qpromise/tst_qpromise.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/auto/corelib/thread/qpromise/tst_qpromise.cpp b/tests/auto/corelib/thread/qpromise/tst_qpromise.cpp
index 5de8ce13ab..12206aa9fc 100644
--- a/tests/auto/corelib/thread/qpromise/tst_qpromise.cpp
+++ b/tests/auto/corelib/thread/qpromise/tst_qpromise.cpp
@@ -40,6 +40,7 @@ private slots:
#endif
void cancelWhenReassigned();
void cancelWhenDestroyedWithoutStarting();
+ void cancelWhenDestroyedRunsContinuations();
void finishWhenSwapped();
void cancelWhenMoved();
void waitUntilResumed();
@@ -494,6 +495,25 @@ void tst_QPromise::cancelWhenDestroyedWithoutStarting()
QVERIFY(future.isFinished());
}
+void tst_QPromise::cancelWhenDestroyedRunsContinuations()
+{
+ QFuture<void> future;
+ bool onCanceledCalled = false;
+ bool thenCalled = false;
+ {
+ QPromise<void> promise;
+ future = promise.future();
+ future.then([&] {
+ thenCalled = true;
+ }).onCanceled([&] {
+ onCanceledCalled = true;
+ });
+ }
+ QVERIFY(future.isFinished());
+ QVERIFY(!thenCalled);
+ QVERIFY(onCanceledCalled);
+}
+
void tst_QPromise::finishWhenSwapped()
{
#if !QT_CONFIG(cxx11_future)