File indexing completed on 2024-05-12 04:38:55

0001 /*
0002     SPDX-FileCopyrightText: 2017 Friedrich W. H. Kossebau <kossebau@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "test_vcsstatusinfo.h"
0008 
0009 #include <QTest>
0010 #include <QStandardPaths>
0011 
0012 using namespace KDevelop;
0013 
0014 void TestVcsStatusInfo::initTestCase()
0015 {
0016     QStandardPaths::setTestModeEnabled(true);
0017 }
0018 
0019 void TestVcsStatusInfo::testCopyConstructor()
0020 {
0021     // test plain copy
0022     const QUrl url(QStringLiteral("git://foo"));
0023     const VcsStatusInfo::State state = VcsStatusInfo::ItemUpToDate;
0024 
0025     {
0026         VcsStatusInfo statusInfoA;
0027         statusInfoA.setUrl(url);
0028         statusInfoA.setState(state);
0029 
0030         VcsStatusInfo statusInfoB(statusInfoA);
0031 
0032         QCOMPARE(statusInfoA.url(), url);
0033         QCOMPARE(statusInfoA.state(), state);
0034         QCOMPARE(statusInfoB.url(), url);
0035         QCOMPARE(statusInfoB.state(), state);
0036         QVERIFY(statusInfoA == statusInfoB);
0037         QVERIFY(statusInfoB == statusInfoA);
0038     }
0039 
0040     const QUrl urlNew(QStringLiteral("svn://bar"));
0041 
0042     // test detach after changing A
0043     {
0044         VcsStatusInfo statusInfoA;
0045         statusInfoA.setUrl(url);
0046         statusInfoA.setState(state);
0047 
0048         VcsStatusInfo statusInfoB(statusInfoA);
0049         // change a property of A
0050         statusInfoA.setUrl(urlNew);
0051 
0052         QCOMPARE(statusInfoA.url(), urlNew);
0053         QCOMPARE(statusInfoA.state(), state);
0054         QCOMPARE(statusInfoB.url(), url);
0055         QCOMPARE(statusInfoB.state(), state);
0056         QVERIFY(statusInfoA != statusInfoB);
0057         QVERIFY(statusInfoB != statusInfoA);
0058     }
0059 }
0060 
0061 void TestVcsStatusInfo::testAssignOperator()
0062 {
0063     // test plain copy
0064     const QUrl url(QStringLiteral("git://foo"));
0065     const VcsStatusInfo::State state = VcsStatusInfo::ItemUpToDate;
0066 
0067     {
0068         VcsStatusInfo statusInfoA;
0069         statusInfoA.setUrl(url);
0070         statusInfoA.setState(state);
0071 
0072         VcsStatusInfo statusInfoB;
0073         statusInfoB = statusInfoA;
0074 
0075         QCOMPARE(statusInfoA.url(), url);
0076         QCOMPARE(statusInfoA.state(), state);
0077         QCOMPARE(statusInfoB.url(), url);
0078         QCOMPARE(statusInfoB.state(), state);
0079         QVERIFY(statusInfoA == statusInfoB);
0080         QVERIFY(statusInfoB == statusInfoA);
0081     }
0082 
0083     const QUrl urlNew(QStringLiteral("svn://bar"));
0084 
0085     // test detach after changing A
0086     {
0087         VcsStatusInfo statusInfoA;
0088         statusInfoA.setUrl(url);
0089         statusInfoA.setState(state);
0090 
0091         VcsStatusInfo statusInfoB;
0092         statusInfoB = statusInfoA;
0093         // change a property of A
0094         statusInfoA.setUrl(urlNew);
0095 
0096         QCOMPARE(statusInfoA.url(), urlNew);
0097         QCOMPARE(statusInfoA.state(), state);
0098         QCOMPARE(statusInfoB.url(), url);
0099         QCOMPARE(statusInfoB.state(), state);
0100         QVERIFY(statusInfoA != statusInfoB);
0101         QVERIFY(statusInfoB != statusInfoA);
0102     }
0103 }
0104 
0105 QTEST_GUILESS_MAIN(TestVcsStatusInfo)
0106 
0107 #include "moc_test_vcsstatusinfo.cpp"