File indexing completed on 2024-05-19 04:40:06
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_vcsannotation.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 TestVcsAnnotation::initTestCase() 0018 { 0019 QStandardPaths::setTestModeEnabled(true); 0020 } 0021 0022 static 0023 VcsAnnotationLine createAnnotationLine(int lineNumber, 0024 const QString& text, 0025 const QString& author, 0026 const VcsRevision& revision, 0027 const QDateTime& date, 0028 const QString& commitMessage) 0029 { 0030 VcsAnnotationLine annotationLine; 0031 annotationLine.setLineNumber(lineNumber); 0032 annotationLine.setText(text); 0033 annotationLine.setAuthor(author); 0034 annotationLine.setRevision(revision); 0035 annotationLine.setDate(date); 0036 annotationLine.setCommitMessage(commitMessage); 0037 return annotationLine; 0038 } 0039 0040 void TestVcsAnnotation::testCopyConstructor() 0041 { 0042 const int lineNumber = 1; 0043 const QString text("Text A"); 0044 const QString author("Author A"); 0045 VcsRevision revision; 0046 revision.setRevisionValue("A", VcsRevision::GlobalNumber); 0047 const QDateTime date = QDateTime::fromString("2001-01-01T00:00:00+00:00", Qt::ISODate); 0048 const QString commitMessage("Commit A"); 0049 const VcsAnnotationLine annotationLine = createAnnotationLine(lineNumber, text, author, revision, date, commitMessage); 0050 const QUrl location(QStringLiteral("git://foo")); 0051 0052 // test plain copy 0053 { 0054 VcsAnnotation annotationA; 0055 annotationA.setLocation(location); 0056 annotationA.insertLine(lineNumber, annotationLine); 0057 0058 VcsAnnotation annotationB(annotationA); 0059 0060 QCOMPARE(annotationA.location(), location); 0061 QCOMPARE(annotationA.lineCount(), 1); 0062 QVERIFY(annotationA.containsLine(lineNumber)); 0063 QCOMPARE(annotationB.location(), location); 0064 QCOMPARE(annotationB.lineCount(), 1); 0065 QVERIFY(annotationB.containsLine(lineNumber)); 0066 } 0067 0068 const QUrl locationNew(QStringLiteral("svn://bar")); 0069 0070 // test detach after changing A 0071 { 0072 VcsAnnotation annotationA; 0073 annotationA.setLocation(location); 0074 annotationA.insertLine(lineNumber, annotationLine); 0075 0076 VcsAnnotation annotationB(annotationA); 0077 // change a property of A 0078 annotationA.setLocation(locationNew); 0079 0080 QCOMPARE(annotationA.location(), locationNew); 0081 QCOMPARE(annotationA.lineCount(), 1); 0082 QVERIFY(annotationA.containsLine(lineNumber)); 0083 QCOMPARE(annotationB.location(), location); 0084 QCOMPARE(annotationB.lineCount(), 1); 0085 QVERIFY(annotationB.containsLine(lineNumber)); 0086 } 0087 } 0088 0089 void TestVcsAnnotation::testAssignOperator() 0090 { 0091 const int lineNumber = 1; 0092 const QString text("Text A"); 0093 const QString author("Author A"); 0094 VcsRevision revision; 0095 revision.setRevisionValue("A", VcsRevision::GlobalNumber); 0096 const QDateTime date = QDateTime::fromString("2001-01-01T00:00:00+00:00", Qt::ISODate); 0097 const QString commitMessage("Commit A"); 0098 const VcsAnnotationLine annotationLine = createAnnotationLine(lineNumber, text, author, revision, date, commitMessage); 0099 const QUrl location(QStringLiteral("https://kdevelop.org")); 0100 0101 // test plain copy 0102 { 0103 VcsAnnotation annotationA; 0104 annotationA.setLocation(location); 0105 annotationA.insertLine(lineNumber, annotationLine); 0106 0107 VcsAnnotation annotationB; 0108 annotationB = annotationA; 0109 0110 QCOMPARE(annotationA.location(), location); 0111 QCOMPARE(annotationA.lineCount(), 1); 0112 QVERIFY(annotationA.containsLine(lineNumber)); 0113 QCOMPARE(annotationB.location(), location); 0114 QCOMPARE(annotationB.lineCount(), 1); 0115 QVERIFY(annotationB.containsLine(lineNumber)); 0116 } 0117 0118 const QUrl locationNew(QStringLiteral("https://kate-editor.org")); 0119 0120 // test detach after changing A 0121 { 0122 VcsAnnotation annotationA; 0123 annotationA.setLocation(location); 0124 annotationA.insertLine(lineNumber, annotationLine); 0125 0126 VcsAnnotation annotationB; 0127 annotationB = annotationA; 0128 // change a property of A 0129 annotationA.setLocation(locationNew); 0130 0131 QCOMPARE(annotationA.location(), locationNew); 0132 QCOMPARE(annotationA.lineCount(), 1); 0133 QVERIFY(annotationA.containsLine(lineNumber)); 0134 QCOMPARE(annotationB.location(), location); 0135 QCOMPARE(annotationB.lineCount(), 1); 0136 QVERIFY(annotationB.containsLine(lineNumber)); 0137 } 0138 } 0139 0140 QTEST_GUILESS_MAIN(TestVcsAnnotation) 0141 0142 #include "moc_test_vcsannotation.cpp"