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_vcsitemevent.h"
0008 
0009 #include <QTest>
0010 #include <QStandardPaths>
0011 
0012 #include <vcs/vcsrevision.h>
0013 
0014 using namespace KDevelop;
0015 
0016 void TestVcsItemEvent::initTestCase()
0017 {
0018     QStandardPaths::setTestModeEnabled(true);
0019 }
0020 
0021 void TestVcsItemEvent::setItemEvent(VcsItemEvent& itemEvent,
0022                                     const QString& repositoryLocation,
0023                                     const QString& repositoryCopySourceLocation,
0024                                     const VcsRevision& repositoryCopySourceRevision,
0025                                     VcsItemEvent::Actions actions)
0026 {
0027     itemEvent.setRepositoryLocation(repositoryLocation);
0028     itemEvent.setRepositoryCopySourceLocation(repositoryCopySourceLocation);
0029     itemEvent.setRepositoryCopySourceRevision(repositoryCopySourceRevision);
0030     itemEvent.setActions(actions);
0031 }
0032 
0033 void TestVcsItemEvent::compareItemEvent(const VcsItemEvent& itemEvent,
0034                                         const QString& repositoryLocation,
0035                                         const QString& repositoryCopySourceLocation,
0036                                         const VcsRevision& repositoryCopySourceRevision,
0037                                         VcsItemEvent::Actions actions)
0038 {
0039     QCOMPARE(itemEvent.repositoryLocation(), repositoryLocation);
0040     QCOMPARE(itemEvent.repositoryCopySourceLocation(), repositoryCopySourceLocation);
0041     QCOMPARE(itemEvent.repositoryCopySourceRevision(), repositoryCopySourceRevision);
0042     QCOMPARE(itemEvent.actions(), actions);
0043 }
0044 
0045 void TestVcsItemEvent::testCopyConstructor()
0046 {
0047     // test plain copy
0048     const QString repositoryLocation("location");
0049     const QString repositoryCopySourceLocation("copy source location");
0050     VcsRevision repositoryCopySourceRevision;
0051     repositoryCopySourceRevision.setRevisionValue("A", VcsRevision::GlobalNumber);
0052     const VcsItemEvent::Actions actions = VcsItemEvent::Added;
0053 
0054     {
0055         VcsItemEvent itemEventA;
0056         setItemEvent(itemEventA,
0057                      repositoryLocation, repositoryCopySourceLocation, repositoryCopySourceRevision, actions);
0058 
0059         VcsItemEvent itemEventB(itemEventA);
0060 
0061         compareItemEvent(itemEventA,
0062                          repositoryLocation, repositoryCopySourceLocation, repositoryCopySourceRevision,
0063                          actions);
0064         compareItemEvent(itemEventB,
0065                          repositoryLocation, repositoryCopySourceLocation, repositoryCopySourceRevision,
0066                          actions);
0067     }
0068 
0069     const QString repositoryLocationNew("new location");
0070 
0071     // test detach after changing A
0072     {
0073         VcsItemEvent itemEventA;
0074         setItemEvent(itemEventA,
0075                      repositoryLocation, repositoryCopySourceLocation, repositoryCopySourceRevision, actions);
0076 
0077         VcsItemEvent itemEventB(itemEventA);
0078         // change a property of A
0079         itemEventA.setRepositoryLocation(repositoryLocationNew);
0080 
0081         compareItemEvent(itemEventA,
0082                          repositoryLocationNew, repositoryCopySourceLocation, repositoryCopySourceRevision,
0083                          actions);
0084         compareItemEvent(itemEventB,
0085                          repositoryLocation,    repositoryCopySourceLocation, repositoryCopySourceRevision,
0086                          actions);
0087     }
0088 }
0089 
0090 void TestVcsItemEvent::testAssignOperator()
0091 {
0092     // test plain assign
0093     const QString repositoryLocation("location");
0094     const QString repositoryCopySourceLocation("copy source location");
0095     VcsRevision repositoryCopySourceRevision;
0096     repositoryCopySourceRevision.setRevisionValue("A", VcsRevision::GlobalNumber);
0097     const VcsItemEvent::Actions actions = VcsItemEvent::Added;
0098 
0099     {
0100         VcsItemEvent itemEventA;
0101         setItemEvent(itemEventA,
0102                      repositoryLocation, repositoryCopySourceLocation, repositoryCopySourceRevision, actions);
0103 
0104         VcsItemEvent itemEventB;
0105         itemEventB = itemEventA;
0106 
0107         compareItemEvent(itemEventA,
0108                          repositoryLocation, repositoryCopySourceLocation, repositoryCopySourceRevision,
0109                          actions);
0110         compareItemEvent(itemEventB,
0111                          repositoryLocation, repositoryCopySourceLocation, repositoryCopySourceRevision,
0112                          actions);
0113     }
0114 
0115     const QString repositoryLocationNew("new location");
0116 
0117     // test detach after changing A
0118     {
0119         VcsItemEvent itemEventA;
0120         setItemEvent(itemEventA,
0121                      repositoryLocation, repositoryCopySourceLocation, repositoryCopySourceRevision, actions);
0122 
0123         VcsItemEvent itemEventB;
0124         itemEventB = itemEventA;
0125         // change a property of A
0126         itemEventA.setRepositoryLocation(repositoryLocationNew);
0127 
0128         compareItemEvent(itemEventA,
0129                          repositoryLocationNew, repositoryCopySourceLocation, repositoryCopySourceRevision,
0130                          actions);
0131         compareItemEvent(itemEventB,
0132                          repositoryLocation,    repositoryCopySourceLocation, repositoryCopySourceRevision,
0133                          actions);
0134     }
0135 }
0136 
0137 QTEST_GUILESS_MAIN(TestVcsItemEvent)
0138 
0139 #include "moc_test_vcsitemevent.cpp"