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_vcsevent.h"
0008 
0009 #include <QTest>
0010 #include <QStandardPaths>
0011 
0012 #include <vcs/vcsrevision.h>
0013 
0014 using namespace KDevelop;
0015 
0016 void TestVcsEvent::initTestCase()
0017 {
0018     QStandardPaths::setTestModeEnabled(true);
0019 }
0020 
0021 void TestVcsEvent::setEvent(VcsEvent& event,
0022                             const VcsRevision& revision,
0023                             const QString& author,
0024                             const QDateTime& date,
0025                             const QString& message,
0026                             const QList<VcsItemEvent>& items)
0027 {
0028     event.setRevision(revision);
0029     event.setAuthor(author);
0030     event.setDate(date);
0031     event.setMessage(message);
0032     event.setItems(items);
0033 }
0034 
0035 void TestVcsEvent::compareEvent(const VcsEvent& event,
0036                                 const VcsRevision& revision,
0037                                 const QString& author,
0038                                 const QDateTime& date,
0039                                 const QString& message,
0040                                 const QList<VcsItemEvent>& items)
0041 {
0042     QCOMPARE(event.revision(), revision);
0043     QCOMPARE(event.author(), author);
0044     QCOMPARE(event.date(), date);
0045     QCOMPARE(event.message(), message);
0046     QCOMPARE(event.items().count(), items.count());
0047 }
0048 
0049 void TestVcsEvent::testCopyConstructor()
0050 {
0051     // test plain copy
0052     VcsRevision revision;
0053     revision.setRevisionValue("A", VcsRevision::GlobalNumber);
0054     const QString author("author");
0055     const QDateTime date = QDateTime::fromString("2001-01-01T00:00:00+00:00", Qt::ISODate);
0056     const QString message("message");
0057     const QList<VcsItemEvent> items({{}});
0058 
0059     {
0060         VcsEvent eventA;
0061         setEvent(eventA,
0062                  revision, author, date, message, items);
0063 
0064         VcsEvent eventB(eventA);
0065 
0066         compareEvent(eventA,
0067                      revision, author, date, message, items);
0068         compareEvent(eventB,
0069                      revision, author, date, message, items);
0070     }
0071 
0072     VcsRevision revisionNew;
0073     revisionNew.setRevisionValue(2, VcsRevision::FileNumber);
0074 
0075     // test detach after changing A
0076     {
0077         VcsEvent eventA;
0078         setEvent(eventA,
0079                  revision, author, date, message, items);
0080 
0081         VcsEvent eventB(eventA);
0082         // change a property of A
0083         eventA.setRevision(revisionNew);
0084 
0085         compareEvent(eventA,
0086                      revisionNew, author, date, message, items);
0087         compareEvent(eventB,
0088                      revision,    author, date, message, items);
0089     }
0090 }
0091 
0092 void TestVcsEvent::testAssignOperator()
0093 {
0094     // test plain copy
0095     VcsRevision revision;
0096     revision.setRevisionValue("A", VcsRevision::GlobalNumber);
0097     const QString author("author");
0098     const QDateTime date = QDateTime::fromString("2001-01-01T00:00:00+00:00", Qt::ISODate);
0099     const QString message("message");
0100     const QList<VcsItemEvent> items({{}});
0101 
0102     {
0103         VcsEvent eventA;
0104         setEvent(eventA,
0105                  revision, author, date, message, items);
0106 
0107         VcsEvent eventB;
0108         eventB = eventA;
0109 
0110         compareEvent(eventA,
0111                      revision, author, date, message, items);
0112         compareEvent(eventB,
0113                      revision, author, date, message, items);
0114     }
0115 
0116     VcsRevision revisionNew;
0117     revisionNew.setRevisionValue(2, VcsRevision::FileNumber);
0118 
0119     // test detach after changing A
0120     {
0121         VcsEvent eventA;
0122         setEvent(eventA,
0123                  revision, author, date, message, items);
0124 
0125         VcsEvent eventB;
0126         eventB = eventA;
0127         // change a property of A
0128         eventA.setRevision(revisionNew);
0129 
0130         compareEvent(eventA,
0131                      revisionNew, author, date, message, items);
0132         compareEvent(eventB,
0133                      revision,    author, date, message, items);
0134     }
0135 }
0136 
0137 QTEST_GUILESS_MAIN(TestVcsEvent)
0138 
0139 #include "moc_test_vcsevent.cpp"