File indexing completed on 2024-05-12 05:55:22

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 "abstractpiecetablechangeiftest.hpp"
0010 
0011 // test object
0012 #include <piecetable/abstractpiecetablechange.hpp>
0013 // lib
0014 #include "testpiecetablechange.hpp"
0015 #include <piecetable/piecetable.hpp>
0016 // Qt
0017 #include <QTest>
0018 
0019 namespace KPieceTable {
0020 
0021 static constexpr Size BaseSize = 100;
0022 static constexpr Address ChangeStorageOffset = 23;
0023 
0024 //---------------------------------------------------------------- Tests -----
0025 
0026 void AbstractPieceTableChangeIfTest::init()
0027 {
0028     mPieceTableChange = createPieceTableChange();
0029 }
0030 
0031 void AbstractPieceTableChangeIfTest::cleanup()
0032 {
0033     deletePieceTableChange(mPieceTableChange);
0034 }
0035 
0036 //---------------------------------------------------------------- Tests -----
0037 
0038 void AbstractPieceTableChangeIfTest::testMerge()
0039 {
0040     TestPieceTableChange testChange;
0041 
0042     int typeId = mPieceTableChange->type();
0043     QString description = mPieceTableChange->description();
0044     bool result = mPieceTableChange->merge(&testChange);
0045 
0046     QVERIFY(!result);
0047     QCOMPARE(mPieceTableChange->type(), typeId);
0048     QCOMPARE(mPieceTableChange->description(), description);
0049 }
0050 
0051 void AbstractPieceTableChangeIfTest::testRevertApply()
0052 {
0053     PieceTable pieceTable;
0054     pieceTable.init(0);
0055     pieceTable.insert(0, BaseSize, ChangeStorageOffset);
0056 
0057     // do change which creates this
0058     changePieceTable(&pieceTable);
0059     mPieceTableChange->revert(&pieceTable);
0060 
0061     QCOMPARE(pieceTable.size(), BaseSize);
0062     for (int i = 0; i < BaseSize; ++i) {
0063         int storageId;
0064         Address storageOffset;
0065         bool result = pieceTable.getStorageData(&storageId, &storageOffset, i);
0066 
0067         QVERIFY(result);
0068         QCOMPARE(storageOffset, i + ChangeStorageOffset);
0069         QCOMPARE(storageId, (int)Piece::ChangeStorage);
0070     }
0071 
0072     // now replay changes
0073     mPieceTableChange->apply(&pieceTable);
0074     mPieceTableChange->revert(&pieceTable);
0075 
0076     QCOMPARE(pieceTable.size(), BaseSize);
0077     for (Address i = 0; i < BaseSize; ++i) {
0078         int storageId;
0079         Address storageOffset;
0080         bool result = pieceTable.getStorageData(&storageId, &storageOffset, i);
0081 
0082         QVERIFY(result);
0083         QCOMPARE(storageOffset, i + ChangeStorageOffset);
0084         QCOMPARE(storageId, (int)Piece::ChangeStorage);
0085     }
0086 }
0087 
0088 }
0089 
0090 #include "moc_abstractpiecetablechangeiftest.cpp"