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 <QStandardPaths>
0009 #include <shell/problemstorenode.h>
0010 #include <shell/problem.h>
0011 
0012 using namespace KDevelop;
0013 
0014 class TestProblemStoreNode : public QObject
0015 {
0016     Q_OBJECT
0017 private Q_SLOTS:
0018     void initTestCase();
0019     void cleanupTestCase();
0020 
0021     void testRootNode();
0022     void testChildren();
0023     void testLabelNode();
0024     void testProblemNode();
0025 
0026 private:
0027     QScopedPointer<ProblemStoreNode> m_root;
0028 };
0029 
0030 
0031 void TestProblemStoreNode::initTestCase()
0032 {
0033     QStandardPaths::setTestModeEnabled(true);
0034     m_root.reset(new ProblemStoreNode());
0035 }
0036 
0037 void TestProblemStoreNode::cleanupTestCase()
0038 {
0039 }
0040 
0041 void TestProblemStoreNode::testRootNode()
0042 {
0043     QVERIFY(m_root->isRoot());
0044     QVERIFY(m_root->parent() == nullptr);
0045     QCOMPARE(m_root->index(), -1);
0046     QCOMPARE(m_root->count(), 0);
0047     QCOMPARE(m_root->children().count(), 0);
0048     QVERIFY(m_root->label().isEmpty());
0049     QVERIFY(m_root->problem().constData() == nullptr);
0050 }
0051 
0052 void TestProblemStoreNode::testChildren()
0053 {
0054     QVector<ProblemStoreNode*> nodes;
0055     nodes.push_back(new ProblemStoreNode());
0056     nodes.push_back(new ProblemStoreNode());
0057     nodes.push_back(new ProblemStoreNode());
0058 
0059     int c = 0;
0060     for (ProblemStoreNode* node : qAsConst(nodes)) {
0061         m_root->addChild(node);
0062 
0063         c++;
0064         QCOMPARE(m_root->count(), c);
0065         QCOMPARE(m_root->children().count(), c);
0066         QVERIFY(node->parent() == m_root.data());
0067         QVERIFY(!node->isRoot());
0068     }
0069 
0070     for (int i = 0; i < c; i++) {
0071         ProblemStoreNode *node = m_root->child(i);
0072 
0073         QVERIFY(node);
0074         QVERIFY(node == nodes[i]);
0075         QCOMPARE(node->index(), i);
0076     }
0077 
0078     nodes.clear();
0079     m_root->clear();
0080     QCOMPARE(m_root->count(), 0);
0081 }
0082 
0083 void TestProblemStoreNode::testLabelNode()
0084 {
0085     QString s1 = QStringLiteral("TEST1");
0086     QString s2 = QStringLiteral("TEST2");
0087 
0088     auto node = LabelNode(nullptr, s1);
0089     QCOMPARE(node.label(), s1);
0090 
0091     node.setLabel(s2);
0092     QCOMPARE(node.label(), s2);
0093 }
0094 
0095 void TestProblemStoreNode::testProblemNode()
0096 {
0097     IProblem::Ptr p1(new DetectedProblem());
0098     IProblem::Ptr p2(new DetectedProblem());
0099 
0100     QString s1 = QStringLiteral("PROBLEM1");
0101     QString s2 = QStringLiteral("PROBLEM2");
0102 
0103     p1->setDescription(s1);
0104     p2->setDescription(s2);
0105 
0106     QScopedPointer<ProblemNode> node;
0107     node.reset(new ProblemNode(nullptr, p1));
0108 
0109     QCOMPARE(node->problem()->description(), p1->description());
0110 
0111     node->setProblem(p2);
0112     QCOMPARE(node->problem()->description(), p2->description());
0113 }
0114 
0115 QTEST_MAIN(TestProblemStoreNode)
0116 
0117 #include "test_problemstorenode.moc"
0118