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_vcsrevision.h"
0008 
0009 #include <QTest>
0010 #include <QStandardPaths>
0011 
0012 #include <vcs/vcsrevision.h>
0013 
0014 using namespace KDevelop;
0015 
0016 void TestVcsRevision::initTestCase()
0017 {
0018     QStandardPaths::setTestModeEnabled(true);
0019 }
0020 
0021 void TestVcsRevision::testCopyConstructor()
0022 {
0023     // copy invalid
0024     {
0025         VcsRevision revisionA;
0026         VcsRevision revisionB(revisionA);
0027         QCOMPARE(revisionA.revisionType(), VcsRevision::Invalid);
0028         QCOMPARE(revisionB.revisionType(), VcsRevision::Invalid);
0029         QVERIFY(revisionB == revisionA);
0030         QVERIFY(revisionA == revisionB);
0031     }
0032 
0033     const VcsRevision::RevisionType revisionType = VcsRevision::GlobalNumber;
0034     const QString globalNumberValue("A");
0035 
0036     // test plain copy
0037     {
0038         VcsRevision revisionA;
0039         revisionA.setRevisionValue(globalNumberValue, revisionType);
0040 
0041         VcsRevision revisionB(revisionA);
0042         QCOMPARE(revisionA.revisionType(), revisionType);
0043         QCOMPARE(revisionA.revisionValue().toString(), globalNumberValue);
0044         QCOMPARE(revisionB.revisionType(), revisionType);
0045         QCOMPARE(revisionB.revisionValue().toString(), globalNumberValue);
0046         QVERIFY(revisionB == revisionA);
0047         QVERIFY(revisionA == revisionB);
0048     }
0049 
0050     const VcsRevision::RevisionType revisionTypeNew = VcsRevision::FileNumber;
0051     const qlonglong fileNumberValueNew = 2;
0052 
0053     // test detach after changing A
0054     {
0055         VcsRevision revisionA;
0056         revisionA.setRevisionValue(globalNumberValue, revisionType);
0057 
0058         VcsRevision revisionB(revisionA);
0059         revisionA.setRevisionValue(fileNumberValueNew, revisionTypeNew);
0060 
0061         QCOMPARE(revisionA.revisionType(), revisionTypeNew);
0062         QCOMPARE(revisionA.revisionValue().toLongLong(), fileNumberValueNew);
0063         QCOMPARE(revisionB.revisionType(), revisionType);
0064         QCOMPARE(revisionB.revisionValue().toString(), globalNumberValue);
0065         QVERIFY(!(revisionB == revisionA));
0066         QVERIFY(!(revisionA == revisionB));
0067     }
0068 }
0069 
0070 void TestVcsRevision::testAssignOperator()
0071 {
0072     // assign invalid
0073     {
0074         const VcsRevision::RevisionType typeB = VcsRevision::FileNumber;
0075         const qlonglong fileNumberB = 2;
0076 
0077         VcsRevision revisionA;
0078 
0079         VcsRevision revisionB;
0080         revisionB.setRevisionValue(fileNumberB, typeB);
0081 
0082         revisionB = revisionA;
0083 
0084         QCOMPARE(revisionA.revisionType(), VcsRevision::Invalid);
0085         QCOMPARE(revisionB.revisionType(), VcsRevision::Invalid);
0086         QVERIFY(revisionB == revisionA);
0087         QVERIFY(revisionA == revisionB);
0088     }
0089 
0090     const VcsRevision::RevisionType revisionType = VcsRevision::GlobalNumber;
0091     const QString globalNumberValue("A");
0092 
0093     // test plain assign
0094     {
0095         VcsRevision revisionA;
0096         revisionA.setRevisionValue(globalNumberValue, revisionType);
0097 
0098         VcsRevision revisionB;
0099         revisionB = revisionA;
0100 
0101         QCOMPARE(revisionA.revisionType(), revisionType);
0102         QCOMPARE(revisionA.revisionValue().toString(), globalNumberValue);
0103         QCOMPARE(revisionB.revisionType(), revisionType);
0104         QCOMPARE(revisionB.revisionValue().toString(), globalNumberValue);
0105         QVERIFY(revisionB == revisionA);
0106         QVERIFY(revisionA == revisionB);
0107     }
0108 
0109     const VcsRevision::RevisionType revisionTypeNew = VcsRevision::FileNumber;
0110     const qlonglong fileNumberValueNew = 2;
0111 
0112     // test detach after changing A
0113     {
0114         VcsRevision revisionA;
0115         revisionA.setRevisionValue(globalNumberValue, revisionType);
0116 
0117         VcsRevision revisionB;
0118         revisionB = revisionA;
0119         revisionA.setRevisionValue(fileNumberValueNew, revisionTypeNew);
0120 
0121         QCOMPARE(revisionA.revisionType(), revisionTypeNew);
0122         QCOMPARE(revisionA.revisionValue().toLongLong(), fileNumberValueNew);
0123         QCOMPARE(revisionB.revisionType(), revisionType);
0124         QCOMPARE(revisionB.revisionValue().toString(), globalNumberValue);
0125         QVERIFY(!(revisionB == revisionA));
0126         QVERIFY(!(revisionA == revisionB));
0127     }
0128 }
0129 
0130 QTEST_GUILESS_MAIN(TestVcsRevision)
0131 
0132 #include "moc_test_vcsrevision.cpp"