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"