File indexing completed on 2024-05-19 04:39:58
0001 /* 0002 SPDX-FileCopyrightText: 2014 Milian Wolff <mail@milianw.de> 0003 SPDX-FileCopyrightText: 2023 Igor Kushnir <igorkuo@gmail.com> 0004 0005 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0006 */ 0007 0008 #include "test_executecompositejob.h" 0009 0010 #include <util/executecompositejob.h> 0011 0012 #include <QStandardPaths> 0013 #include <QStringList> 0014 #include <QTest> 0015 0016 #include <utility> 0017 0018 using namespace KDevelop; 0019 0020 class TestJob : public KJob 0021 { 0022 void start() override 0023 { 0024 } 0025 }; 0026 0027 class TestCompositeJob : public ExecuteCompositeJob 0028 { 0029 public: 0030 using ExecuteCompositeJob::ExecuteCompositeJob; 0031 using ExecuteCompositeJob::subjobs; 0032 }; 0033 0034 void TestExecuteCompositeJob::initTestCase() 0035 { 0036 QStandardPaths::setTestModeEnabled(true); 0037 } 0038 0039 void TestExecuteCompositeJob::create_data() 0040 { 0041 QTest::addColumn<QStringList>("subjobNames"); 0042 QTest::addColumn<QString>("expectedCompositeJobName"); 0043 0044 QTest::newRow("no subjobs") << QStringList{} << ""; 0045 QTest::newRow("empty-named subjob") << QStringList{""} << ""; 0046 QTest::newRow("named subjob") << QStringList{"run as"} << "run as"; 0047 QTest::newRow("two empty-named subjobs") << QStringList{"", ""} << ""; 0048 QTest::newRow("empty-named and named") << QStringList{"", "pick"} << "pick"; 0049 QTest::newRow("named and empty-named") << QStringList{"take", ""} << "take"; 0050 QTest::newRow("two named subjobs") << QStringList{"x", "y"} << "x"; 0051 QTest::newRow("three empty-named subjobs") << QStringList{"", "", ""} << ""; 0052 QTest::newRow("empty-named and two named") << QStringList{"", "y", "x"} << "y"; 0053 } 0054 0055 void TestExecuteCompositeJob::create() 0056 { 0057 QFETCH(const QStringList, subjobNames); 0058 QFETCH(const QString, expectedCompositeJobName); 0059 0060 QList<KJob*> subjobs; 0061 for (auto& name : subjobNames) { 0062 subjobs.push_back(new TestJob); 0063 subjobs.back()->setObjectName(name); 0064 } 0065 QCOMPARE(subjobs.size(), subjobNames.size()); 0066 0067 TestCompositeJob compositeJob(nullptr, std::as_const(subjobs)); 0068 QCOMPARE(compositeJob.subjobs(), subjobs); 0069 QCOMPARE(compositeJob.objectName(), expectedCompositeJobName); 0070 for (auto& subjob : std::as_const(subjobs)) { 0071 QCOMPARE(subjob->parent(), &compositeJob); 0072 } 0073 } 0074 0075 QTEST_GUILESS_MAIN(TestExecuteCompositeJob) 0076 0077 #include "moc_test_executecompositejob.cpp"