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

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_vcsannotationline.h"
0008 
0009 #include <QTest>
0010 #include <QStandardPaths>
0011 
0012 #include <vcs/vcsannotation.h>
0013 #include <vcs/vcsrevision.h>
0014 
0015 using namespace KDevelop;
0016 
0017 void TestVcsAnnotationLine::initTestCase()
0018 {
0019     QStandardPaths::setTestModeEnabled(true);
0020 }
0021 
0022 void TestVcsAnnotationLine::setAnnotationLine(VcsAnnotationLine& annotationLine,
0023                                               int lineNumber,
0024                                               const QString& text,
0025                                               const QString& author,
0026                                               const VcsRevision& revision,
0027                                               const QDateTime& date,
0028                                               const QString& commitMessage)
0029 {
0030     annotationLine.setLineNumber(lineNumber);
0031     annotationLine.setText(text);
0032     annotationLine.setAuthor(author);
0033     annotationLine.setRevision(revision);
0034     annotationLine.setDate(date);
0035     annotationLine.setCommitMessage(commitMessage);
0036 }
0037 
0038 void TestVcsAnnotationLine::compareAnnotationLine(const VcsAnnotationLine& annotationLine,
0039                                                   int lineNumber,
0040                                                   const QString& text,
0041                                                   const QString& author,
0042                                                   const VcsRevision& revision,
0043                                                   const QDateTime& date,
0044                                                   const QString& commitMessage)
0045 {
0046     QCOMPARE(annotationLine.lineNumber(), lineNumber);
0047     QCOMPARE(annotationLine.text(), text);
0048     QCOMPARE(annotationLine.author(), author);
0049     QCOMPARE(annotationLine.revision(), revision);
0050     QCOMPARE(annotationLine.date(), date);
0051     QCOMPARE(annotationLine.commitMessage(), commitMessage);
0052 }
0053 
0054 void TestVcsAnnotationLine::testCopyConstructor()
0055 {
0056     // copy invalid
0057     {
0058         VcsAnnotationLine annotationLineA;
0059 
0060         VcsAnnotationLine annotationLineB(annotationLineA);
0061         QCOMPARE(annotationLineA.revision().revisionType(), VcsRevision::Invalid);
0062         QCOMPARE(annotationLineB.revision().revisionType(), VcsRevision::Invalid);
0063     }
0064 
0065     // test plain copy
0066     const int lineNumber = 1;
0067     const QString text("Text A");
0068     const QString author("Author A");
0069     VcsRevision revision;
0070     revision.setRevisionValue("A", VcsRevision::GlobalNumber);
0071     const QDateTime date = QDateTime::fromString("2001-01-01T00:00:00+00:00", Qt::ISODate);
0072     const QString commitMessage("Commit A");
0073 
0074     {
0075         VcsAnnotationLine annotationLineA;
0076         setAnnotationLine(annotationLineA, 
0077                           lineNumber, text, author, revision, date, commitMessage);
0078 
0079         VcsAnnotationLine annotationLineB(annotationLineA);
0080         compareAnnotationLine(annotationLineA,
0081                               lineNumber, text, author, revision, date, commitMessage);
0082         compareAnnotationLine(annotationLineB,
0083                               lineNumber, text, author, revision, date, commitMessage);
0084     }
0085 
0086     const int lineNumberNew = 10;
0087 
0088     // test detach after changing A
0089     {
0090         VcsAnnotationLine annotationLineA;
0091         setAnnotationLine(annotationLineA, 
0092                           lineNumber, text, author, revision, date, commitMessage);
0093 
0094         VcsAnnotationLine annotationLineB(annotationLineA);
0095         // change a property of A
0096         annotationLineA.setLineNumber(lineNumberNew);
0097 
0098         compareAnnotationLine(annotationLineA,
0099                               lineNumberNew, text, author, revision, date, commitMessage);
0100         compareAnnotationLine(annotationLineB,
0101                               lineNumber,    text, author, revision, date, commitMessage);
0102     }
0103 }
0104 
0105 void TestVcsAnnotationLine::testAssignOperator()
0106 {
0107     // assign invalid
0108     {
0109         VcsAnnotationLine annotationLineA;
0110 
0111         VcsAnnotationLine annotationLineB;
0112         VcsRevision revision;
0113         revision.setRevisionValue(2, VcsRevision::FileNumber);
0114         annotationLineB.setRevision(revision);
0115 
0116         annotationLineB = annotationLineA;
0117 
0118         QCOMPARE(annotationLineA.revision().revisionType(), VcsRevision::Invalid);
0119         QCOMPARE(annotationLineB.revision().revisionType(), VcsRevision::Invalid);
0120     }
0121 
0122     // test plain assign
0123     const int lineNumber = 1;
0124     const QString text("Text A");
0125     const QString author("Author A");
0126     VcsRevision revision;
0127     revision.setRevisionValue("A", VcsRevision::GlobalNumber);
0128     const QDateTime date = QDateTime::fromString("2001-01-01T00:00:00+00:00", Qt::ISODate);
0129     const QString commitMessage("Commit A");
0130 
0131     {
0132         VcsAnnotationLine annotationLineA;
0133         setAnnotationLine(annotationLineA, 
0134                           lineNumber, text, author, revision, date, commitMessage);
0135 
0136         VcsAnnotationLine annotationLineB;
0137         annotationLineB = annotationLineA;
0138 
0139         compareAnnotationLine(annotationLineA,
0140                               lineNumber, text, author, revision, date, commitMessage);
0141         compareAnnotationLine(annotationLineB,
0142                               lineNumber, text, author, revision, date, commitMessage);
0143     }
0144 
0145     const int lineNumberNew = 10;
0146 
0147     // test detach after changing A
0148     {
0149         VcsAnnotationLine annotationLineA;
0150         setAnnotationLine(annotationLineA, 
0151                           lineNumber, text, author, revision, date, commitMessage);
0152 
0153         VcsAnnotationLine annotationLineB;
0154         annotationLineB = annotationLineA;
0155         // change a property of A
0156         annotationLineA.setLineNumber(lineNumberNew);
0157 
0158         compareAnnotationLine(annotationLineA,
0159                               lineNumberNew, text, author, revision, date, commitMessage);
0160         compareAnnotationLine(annotationLineB,
0161                               lineNumber,    text, author, revision, date, commitMessage);
0162     }
0163 }
0164 
0165 QTEST_GUILESS_MAIN(TestVcsAnnotationLine)
0166 
0167 #include "moc_test_vcsannotationline.cpp"