diff options
author | flow <flowlnlnln@gmail.com> | 2022-07-22 01:21:57 -0300 |
---|---|---|
committer | flow <flowlnlnln@gmail.com> | 2022-08-28 16:29:01 -0300 |
commit | 247f99ce2f981adad48974abf95ef5e10b832503 (patch) | |
tree | c1d479cc50ff8e55220d8b50295af505788bb0f9 /launcher/tasks | |
parent | 7b6d26990469f26dfbed6d55af25240ef0618df4 (diff) | |
download | PrismLauncher-247f99ce2f981adad48974abf95ef5e10b832503.tar.gz PrismLauncher-247f99ce2f981adad48974abf95ef5e10b832503.tar.bz2 PrismLauncher-247f99ce2f981adad48974abf95ef5e10b832503.zip |
feat(test): add more tests to Tasks
Signed-off-by: flow <flowlnlnln@gmail.com>
Diffstat (limited to 'launcher/tasks')
-rw-r--r-- | launcher/tasks/Task_test.cpp | 125 |
1 files changed, 124 insertions, 1 deletions
diff --git a/launcher/tasks/Task_test.cpp b/launcher/tasks/Task_test.cpp index ef153a6a..b56ee8a6 100644 --- a/launcher/tasks/Task_test.cpp +++ b/launcher/tasks/Task_test.cpp @@ -1,5 +1,8 @@ #include <QTest> +#include "ConcurrentTask.h" +#include "MultipleOptionsTask.h" +#include "SequentialTask.h" #include "Task.h" /* Does nothing. Only used for testing. */ @@ -9,7 +12,10 @@ class BasicTask : public Task { friend class TaskTest; private: - void executeTask() override {}; + void executeTask() override + { + emitSucceeded(); + }; }; /* Does nothing. Only used for testing. */ @@ -60,6 +66,123 @@ class TaskTest : public QObject { QCOMPARE(t.getProgress(), current); QCOMPARE(t.getTotalProgress(), total); } + + void test_basicRun(){ + BasicTask t; + QObject::connect(&t, &Task::finished, [&]{ QVERIFY2(t.wasSuccessful(), "Task finished but was not successful when it should have been."); }); + t.start(); + + QVERIFY2(QTest::qWaitFor([&]() { + return t.isFinished(); + }, 1000), "Task didn't finish as it should."); + } + + void test_basicConcurrentRun(){ + BasicTask t1; + BasicTask t2; + BasicTask t3; + + ConcurrentTask t; + + t.addTask(&t1); + t.addTask(&t2); + t.addTask(&t3); + + QObject::connect(&t, &Task::finished, [&]{ + QVERIFY2(t.wasSuccessful(), "Task finished but was not successful when it should have been."); + QVERIFY(t1.wasSuccessful()); + QVERIFY(t2.wasSuccessful()); + QVERIFY(t3.wasSuccessful()); + }); + + t.start(); + QVERIFY2(QTest::qWaitFor([&]() { + return t.isFinished(); + }, 1000), "Task didn't finish as it should."); + } + + // Tests if starting new tasks after the 6 initial ones is working + void test_moreConcurrentRun(){ + BasicTask t1, t2, t3, t4, t5, t6, t7, t8, t9; + + ConcurrentTask t; + + t.addTask(&t1); + t.addTask(&t2); + t.addTask(&t3); + t.addTask(&t4); + t.addTask(&t5); + t.addTask(&t6); + t.addTask(&t7); + t.addTask(&t8); + t.addTask(&t9); + + QObject::connect(&t, &Task::finished, [&]{ + QVERIFY2(t.wasSuccessful(), "Task finished but was not successful when it should have been."); + QVERIFY(t1.wasSuccessful()); + QVERIFY(t2.wasSuccessful()); + QVERIFY(t3.wasSuccessful()); + QVERIFY(t4.wasSuccessful()); + QVERIFY(t5.wasSuccessful()); + QVERIFY(t6.wasSuccessful()); + QVERIFY(t7.wasSuccessful()); + QVERIFY(t8.wasSuccessful()); + QVERIFY(t9.wasSuccessful()); + }); + + t.start(); + QVERIFY2(QTest::qWaitFor([&]() { + return t.isFinished(); + }, 1000), "Task didn't finish as it should."); + } + + void test_basicSequentialRun(){ + BasicTask t1; + BasicTask t2; + BasicTask t3; + + SequentialTask t; + + t.addTask(&t1); + t.addTask(&t2); + t.addTask(&t3); + + QObject::connect(&t, &Task::finished, [&]{ + QVERIFY2(t.wasSuccessful(), "Task finished but was not successful when it should have been."); + QVERIFY(t1.wasSuccessful()); + QVERIFY(t2.wasSuccessful()); + QVERIFY(t3.wasSuccessful()); + }); + + t.start(); + QVERIFY2(QTest::qWaitFor([&]() { + return t.isFinished(); + }, 1000), "Task didn't finish as it should."); + } + + void test_basicMultipleOptionsRun(){ + BasicTask t1; + BasicTask t2; + BasicTask t3; + + MultipleOptionsTask t; + + t.addTask(&t1); + t.addTask(&t2); + t.addTask(&t3); + + QObject::connect(&t, &Task::finished, [&]{ + QVERIFY2(t.wasSuccessful(), "Task finished but was not successful when it should have been."); + QVERIFY(t1.wasSuccessful()); + QVERIFY(!t2.wasSuccessful()); + QVERIFY(!t3.wasSuccessful()); + }); + + t.start(); + QVERIFY2(QTest::qWaitFor([&]() { + return t.isFinished(); + }, 1000), "Task didn't finish as it should."); + } }; QTEST_GUILESS_MAIN(TaskTest) |