diff --git a/tests/auto/utils/async/tst_async.cpp b/tests/auto/utils/async/tst_async.cpp index 2f12ec7cc47..ee7025bad1d 100644 --- a/tests/auto/utils/async/tst_async.cpp +++ b/tests/auto/utils/async/tst_async.cpp @@ -33,12 +33,25 @@ void report3(QPromise &promise) promise.addResult(1); } +static void staticReport3(QPromise &promise) +{ + promise.addResult(0); + promise.addResult(2); + promise.addResult(1); +} + void reportN(QPromise &promise, int n) { for (int i = 0; i < n; ++i) promise.addResult(0); } +static void staticReportN(QPromise &promise, int n) +{ + for (int i = 0; i < n; ++i) + promise.addResult(0); +} + void reportString1(QPromise &promise, const QString &s) { promise.addResult(s); @@ -135,6 +148,24 @@ std::shared_ptr> createAsyncTask(Function &&function, Args &&. void tst_Async::runAsync() { + // tesing QtConcurrent::run() + QCOMPARE(QtConcurrent::run(&report3).results(), + QList({0, 2, 1})); + QCOMPARE(QtConcurrent::run(report3).results(), + QList({0, 2, 1})); + QCOMPARE(QtConcurrent::run(&staticReport3).results(), + QList({0, 2, 1})); + QCOMPARE(QtConcurrent::run(staticReport3).results(), + QList({0, 2, 1})); + QCOMPARE(QtConcurrent::run(&reportN, 2).results(), + QList({0, 0})); + QCOMPARE(QtConcurrent::run(reportN, 2).results(), + QList({0, 0})); + QCOMPARE(QtConcurrent::run(&staticReportN, 2).results(), + QList({0, 0})); + QCOMPARE(QtConcurrent::run(staticReportN, 2).results(), + QList({0, 0})); + // free function pointer QCOMPARE(createAsyncTask(&report3)->results(), QList({0, 2, 1})); @@ -144,15 +175,31 @@ void tst_Async::runAsync() QList({0, 2, 1})); QCOMPARE(Utils::asyncRun(report3).results(), QList({0, 2, 1})); + QCOMPARE(createAsyncTask(&staticReport3)->results(), + QList({0, 2, 1})); + QCOMPARE(Utils::asyncRun(&staticReport3).results(), + QList({0, 2, 1})); + QCOMPARE(createAsyncTask(staticReport3)->results(), + QList({0, 2, 1})); + QCOMPARE(Utils::asyncRun(staticReport3).results(), + QList({0, 2, 1})); - QCOMPARE(createAsyncTask(reportN, 4)->results(), - QList({0, 0, 0, 0})); - QCOMPARE(Utils::asyncRun(reportN, 4).results(), - QList({0, 0, 0, 0})); + QCOMPARE(createAsyncTask(&reportN, 2)->results(), + QList({0, 0})); + QCOMPARE(Utils::asyncRun(&reportN, 2).results(), + QList({0, 0})); QCOMPARE(createAsyncTask(reportN, 2)->results(), QList({0, 0})); QCOMPARE(Utils::asyncRun(reportN, 2).results(), QList({0, 0})); + QCOMPARE(createAsyncTask(&staticReportN, 2)->results(), + QList({0, 0})); + QCOMPARE(Utils::asyncRun(&staticReportN, 2).results(), + QList({0, 0})); + QCOMPARE(createAsyncTask(staticReportN, 2)->results(), + QList({0, 0})); + QCOMPARE(Utils::asyncRun(staticReportN, 2).results(), + QList({0, 0})); QString s = QLatin1String("string"); const QString &crs = QLatin1String("cr string");