diff options
author | Sona Kurazyan <sona.kurazyan@qt.io> | 2021-12-09 21:49:40 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2021-12-11 21:47:17 +0000 |
commit | ed546ff216010c979b94263aab4773a1a6afd5bb (patch) | |
tree | 33fdeb92d1bf4787d81828e17776c49eb9c0956c /tests/auto/corelib/thread | |
parent | 799660d679e5cc1638d403a19871534627e17dc6 (diff) |
QtFuture::connect: exclude QPrivateSignal from the resulting future type
Filter out the last argument of type QPrivateSignal from the signal's
arguments passed to QtFuture::connect().
Pick-to: 6.2
Fixes: QTBUG-92501
Change-Id: Idcd6baba1f01fcc94fa64b1c7030a629d01ed7a1
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'tests/auto/corelib/thread')
-rw-r--r-- | tests/auto/corelib/thread/qfuture/tst_qfuture.cpp | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/tests/auto/corelib/thread/qfuture/tst_qfuture.cpp b/tests/auto/corelib/thread/qfuture/tst_qfuture.cpp index f97caa0633..7b272cf5a3 100644 --- a/tests/auto/corelib/thread/qfuture/tst_qfuture.cpp +++ b/tests/auto/corelib/thread/qfuture/tst_qfuture.cpp @@ -70,11 +70,23 @@ public: emit multipleArgs(value1, value2, value3); } + void emitNoArgPrivateSignal() { emit noArgPrivateSignal(QPrivateSignal()); } + void emitIntArgPrivateSignal(int value) { emit intArgPrivateSignal(value, QPrivateSignal()); } + void emitMultiArgsPrivateSignal(int value1, double value2, const QString &value3) + { + emit multiArgsPrivateSignal(value1, value2, value3, QPrivateSignal()); + } + signals: void noArgSignal(); void intArgSignal(int value); void constRefArg(const QString &value); void multipleArgs(int value1, double value2, const QString &value3); + + // Private signals + void noArgPrivateSignal(QPrivateSignal); + void intArgPrivateSignal(int value, QPrivateSignal); + void multiArgsPrivateSignal(int value1, double value2, const QString &value3, QPrivateSignal); }; class LambdaThread : public QThread @@ -3433,7 +3445,7 @@ void tst_QFuture::signalConnect() { SenderObject sender; auto future = - QtFuture::connect(&sender, &SenderObject::noArgSignal).then([&] { return true; }); + QtFuture::connect(&sender, &SenderObject::noArgSignal).then([] { return true; }); sender.emitNoArg(); QCOMPARE(future.result(), true); } @@ -3474,6 +3486,39 @@ void tst_QFuture::signalConnect() QCOMPARE(std::get<2>(result), "42"); } + // No arg private signal + { + SenderObject sender; + auto future = QtFuture::connect(&sender, &SenderObject::noArgPrivateSignal).then([] { + return true; + }); + sender.emitNoArgPrivateSignal(); + QCOMPARE(future.result(), true); + } + + // One arg private signal + { + SenderObject sender; + auto future = + QtFuture::connect(&sender, &SenderObject::intArgPrivateSignal).then([](int value) { + return value; + }); + sender.emitIntArgPrivateSignal(42); + QCOMPARE(future.result(), 42); + } + + // Multi-args private signal + { + SenderObject sender; + auto future = QtFuture::connect(&sender, &SenderObject::multiArgsPrivateSignal) + .then([](std::tuple<int, double, QString> values) { return values; }); + sender.emitMultiArgsPrivateSignal(42, 42.5, "42"); + const auto [i, d, s] = future.result(); + QCOMPARE(i, 42); + QCOMPARE(d, 42.5); + QCOMPARE(s, "42"); + } + // Sender destroyed { SenderObject *sender = new SenderObject(); |