File indexing completed on 2024-05-12 04:38:21
0001 /* 0002 SPDX-FileCopyrightText: 2015 Laszlo Kis-Adam <laszlo.kis-adam@kdemail.net> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include <QTest> 0008 #include <QSignalSpy> 0009 #include <shell/problemstore.h> 0010 #include <shell/problem.h> 0011 #include <shell/problemstorenode.h> 0012 #include <shell/problemconstants.h> 0013 0014 #include <tests/testcore.h> 0015 #include <tests/autotestshell.h> 0016 0017 using namespace KDevelop; 0018 0019 class TestProblemStore : public QObject 0020 { 0021 Q_OBJECT 0022 0023 private Q_SLOTS: 0024 void initTestCase(); 0025 void cleanupTestCase(); 0026 0027 void testAddProblems(); 0028 void testClearProblems(); 0029 void testSetProblems(); 0030 void testFindNode(); 0031 void testSeverity(); 0032 void testSeverities(); 0033 void testScope(); 0034 0035 private: 0036 void generateProblems(); 0037 0038 QScopedPointer<ProblemStore> m_store; 0039 QVector<IProblem::Ptr> m_problems; 0040 }; 0041 0042 0043 void TestProblemStore::initTestCase() 0044 { 0045 AutoTestShell::init(); 0046 TestCore::initialize(Core::NoUi); 0047 0048 m_store.reset(new ProblemStore()); 0049 m_store->setScope(CurrentDocument); 0050 QVERIFY(m_store->scope() == CurrentDocument); 0051 0052 generateProblems(); 0053 } 0054 0055 void TestProblemStore::cleanupTestCase() 0056 { 0057 TestCore::shutdown(); 0058 } 0059 0060 void TestProblemStore::testAddProblems() 0061 { 0062 QCOMPARE(m_store->count(), 0); 0063 0064 int c = 0; 0065 for (const IProblem::Ptr& problem : qAsConst(m_problems)) { 0066 m_store->addProblem(problem); 0067 c++; 0068 0069 QCOMPARE(m_store->count(), c); 0070 } 0071 } 0072 0073 void TestProblemStore::testClearProblems() 0074 { 0075 m_store->clear(); 0076 QCOMPARE(m_store->count(), 0); 0077 } 0078 0079 void TestProblemStore::testSetProblems() 0080 { 0081 m_store->setProblems(m_problems); 0082 0083 QCOMPARE(m_store->count(), m_problems.count()); 0084 } 0085 0086 void TestProblemStore::testFindNode() 0087 { 0088 for (int i = 0; i < m_problems.count(); i++) { 0089 const auto *node = dynamic_cast<const ProblemNode*>(m_store->findNode(i)); 0090 0091 QVERIFY(node); 0092 QVERIFY(node->problem().data()); 0093 QCOMPARE(node->problem().data()->description(), m_problems[i]->description()); 0094 } 0095 } 0096 0097 void TestProblemStore::testSeverity() 0098 { 0099 IProblem::Severity severity = IProblem::Error; 0100 0101 QVERIFY(severity != m_store->severity()); 0102 0103 QSignalSpy spy(m_store.data(), &ProblemStore::changed); 0104 m_store->setSeverity(severity); 0105 0106 QVERIFY(m_store->severity() == severity); 0107 QCOMPARE(spy.count(), 1); 0108 } 0109 0110 void TestProblemStore::testSeverities() 0111 { 0112 IProblem::Severities severities = IProblem::Error | IProblem::Hint; 0113 0114 QVERIFY(severities != m_store->severities()); 0115 0116 QSignalSpy spy(m_store.data(), &ProblemStore::changed); 0117 m_store->setSeverities(severities); 0118 0119 QVERIFY(m_store->severities() == severities); 0120 QCOMPARE(spy.count(), 1); 0121 } 0122 0123 void TestProblemStore::testScope() 0124 { 0125 QSignalSpy spy(m_store.data(), &ProblemStore::changed); 0126 ProblemScope scope = AllProjects; 0127 0128 m_store->setScope(scope); 0129 QVERIFY(m_store->scope() == scope); 0130 QCOMPARE(spy.count(), 1); 0131 } 0132 0133 void TestProblemStore::generateProblems() 0134 { 0135 for (int i = 0; i < 5; i++) { 0136 IProblem::Ptr problem(new DetectedProblem()); 0137 0138 problem->setDescription(QStringLiteral("PROBLEM") + QString::number(i + 1)); 0139 m_problems.push_back(problem); 0140 } 0141 } 0142 0143 QTEST_MAIN(TestProblemStore) 0144 0145 #include "test_problemstore.moc"