File indexing completed on 2024-04-28 05:52:33

0001 /*
0002     This file is part of the Okteta Core library, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2008 Friedrich W. H. Kossebau <kossebau@kde.org>
0005 
0006     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007 */
0008 
0009 #include "versionableiftest.hpp"
0010 
0011 // test object
0012 #include <versionable.hpp>
0013 // Qt
0014 #include <QTest>
0015 #include <QSignalSpy>
0016 
0017 namespace Okteta {
0018 
0019 // ---------------------------------------------------------------- Tests -----
0020 
0021 void VersionableIfTest::init()
0022 {
0023     mObject = createVersionable();
0024 
0025     mVersionableControl = qobject_cast<Okteta::Versionable*>(mObject);
0026 
0027     mRevertedToVersionIndexSpy =
0028         new QSignalSpy(mObject, SIGNAL(revertedToVersionIndex(int)));
0029     mHeadVersionDescriptionChangedSpy =
0030         new QSignalSpy(mObject, SIGNAL(headVersionDescriptionChanged(QString)));
0031     mHeadVersionChangedSpy =
0032         new QSignalSpy(mObject, SIGNAL(headVersionChanged(int)));
0033 }
0034 
0035 void VersionableIfTest::cleanup()
0036 {
0037     deleteVersionable(mObject);
0038 
0039     delete mRevertedToVersionIndexSpy;
0040     delete mHeadVersionDescriptionChangedSpy;
0041     delete mHeadVersionChangedSpy;
0042 }
0043 
0044 void VersionableIfTest::clearSignalSpys()
0045 {
0046     mRevertedToVersionIndexSpy->clear();
0047     mHeadVersionDescriptionChangedSpy->clear();
0048     mHeadVersionChangedSpy->clear();
0049 }
0050 
0051 void VersionableIfTest::checkRevertedToVersionIndex(int versionIndex)
0052 {
0053     QVERIFY(mRevertedToVersionIndexSpy->isValid());
0054     QCOMPARE(mRevertedToVersionIndexSpy->size(), 1);
0055     const QList<QVariant> arguments = mRevertedToVersionIndexSpy->takeFirst();
0056     QCOMPARE(arguments.at(0).toInt(), versionIndex);
0057 }
0058 
0059 void VersionableIfTest::checkHeadVersionDescriptionChanged(const QString& versionDescription)
0060 {
0061     QVERIFY(mHeadVersionDescriptionChangedSpy->isValid());
0062     QCOMPARE(mHeadVersionDescriptionChangedSpy->size(), 1);
0063     const QList<QVariant> arguments = mHeadVersionDescriptionChangedSpy->takeFirst();
0064     QCOMPARE(arguments.at(0).toString(), versionDescription);
0065 }
0066 
0067 void VersionableIfTest::checkHeadVersionChanged(int newHeadVersionIndex)
0068 {
0069     QVERIFY(mHeadVersionChangedSpy->isValid());
0070     QCOMPARE(mHeadVersionChangedSpy->size(), 1);
0071     QList<QVariant> arguments = mHeadVersionChangedSpy->takeFirst();
0072     QCOMPARE(arguments.at(0).toInt(), newHeadVersionIndex);
0073 }
0074 
0075 // ---------------------------------------------------------------- Tests -----
0076 
0077 void VersionableIfTest::testBegin()
0078 {
0079     QCOMPARE(mVersionableControl->versionIndex(), 0);
0080     QCOMPARE(mVersionableControl->versionCount(), 1);
0081 }
0082 
0083 #if 0
0084 void VersionableIfTest::testFill()
0085 {
0086 
0087     weiter an ende
0088     1. neue Version
0089     2. Versionsänderung
0090     weiter in mitte
0091     weiter an anfang
0092 
0093     // can we alter the buffer at all?
0094     if (mVersionable->isReadOnly()) {
0095         // skip
0096         return;
0097     }
0098 
0099     constexpr unsigned int FillSize = 10;
0100     unsigned int Size = mVersionable->size();
0101     Section FillSection = Section::fromWidth(0, Size);
0102 
0103     FixedSizeByteArrayModel Copy(Size, PaintChar);
0104 
0105     // fill() all
0106     mVersionable->setModified(false);
0107     mVersionable->fill(BlankChar);
0108     clearSignalSpys();
0109 
0110     mVersionable->fill(PaintChar);
0111     QCOMPARE(Copy.compare(*mVersionable), 0);
0112     QVERIFY(mVersionable->isModified());
0113     checkContentsReplaced(FillSection, FillSection.width());
0114     checkContentsChanged(0, mVersionable->size() - 1);
0115 
0116     // fill() at begin
0117     FillSection.set(0, FillSize);
0118     mVersionable->setModified(false);
0119     mVersionable->fill(BlankChar);
0120     clearSignalSpys();
0121 
0122     mVersionable->fill(PaintChar, FillSection);
0123     QCOMPARE(Copy.compare(*mVersionable, FillSection), 0);
0124     QCOMPARE(mVersionable->datum(FillSection.nextBehindEnd()), BlankChar);
0125     QVERIFY(mVersionable->isModified());
0126     checkContentsReplaced(FillSection, FillSection.width());
0127     checkContentsChanged(FillSection);
0128 
0129     // fill() at end
0130     mVersionable->setModified(false);
0131     mVersionable->fill(BlankChar);
0132     FillSection.moveToEnd(Size - 1);
0133     clearSignalSpys();
0134 
0135     mVersionable->fill(PaintChar, FillSection);
0136     QCOMPARE(mVersionable->datum(FillSection.nextBeforeStart()), BlankChar);
0137     QCOMPARE(Copy.compare(*mVersionable, FillSection, FillSection.start()), 0);
0138     QVERIFY(mVersionable->isModified());
0139     checkContentsReplaced(FillSection, FillSection.width());
0140     checkContentsChanged(FillSection);
0141 
0142     // fill() at mid
0143     mVersionable->setModified(false);
0144     mVersionable->fill(BlankChar);
0145     FillSection.moveToStart(Size / 2);
0146     clearSignalSpys();
0147 
0148     mVersionable->fill(PaintChar, FillSection);
0149     QCOMPARE(mVersionable->datum(FillSection.nextBeforeStart()), BlankChar);
0150     QCOMPARE(Copy.compare(*mVersionable, FillSection, FillSection.start()), 0);
0151     QCOMPARE(mVersionable->datum(FillSection.nextBehindEnd()), BlankChar);
0152     QVERIFY(mVersionable->isModified());
0153     checkContentsReplaced(FillSection, FillSection.width());
0154     checkContentsChanged(FillSection);
0155 }
0156 #endif
0157 
0158 }
0159 
0160 #include "moc_versionableiftest.cpp"