aboutsummaryrefslogtreecommitdiff
path: root/launcher/tasks
diff options
context:
space:
mode:
authorflow <flowlnlnln@gmail.com>2022-07-22 01:21:57 -0300
committerflow <flowlnlnln@gmail.com>2022-08-28 16:29:01 -0300
commit247f99ce2f981adad48974abf95ef5e10b832503 (patch)
treec1d479cc50ff8e55220d8b50295af505788bb0f9 /launcher/tasks
parent7b6d26990469f26dfbed6d55af25240ef0618df4 (diff)
downloadPrismLauncher-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.cpp125
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)