1 /*
2     This file is part of the Okteta Core library, made within the KDE community.
3 
4     SPDX-FileCopyrightText: 2008 Friedrich W. H. Kossebau <kossebau@kde.org>
5 
6     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
7 */
8 
9 #include "grouppiecetablechangeabstractpiecetablechangeiftest.hpp"
10 
11 // test object
12 #include <piecetable/grouppiecetablechange.hpp>
13 #include <piecetable/replacepiecetablechange.hpp>
14 #include <piecetable/insertpiecetablechange.hpp>
15 #include <piecetable/removepiecetablechange.hpp>
16 // lib
17 #include <piecetable/piecetable.hpp>
18 // Qt
19 #include <QTest>
20 
21 namespace KPieceTable {
22 
23 static constexpr Address ReplacedOldStorageOffset = 80;
24 static constexpr Address ReplacedStart = 32;
25 static constexpr Address ReplacedEnd = 78;
26 static constexpr Size ReplacedWidth = ReplacedEnd - ReplacedStart + 1;
27 static constexpr Size ReplaceLength = 30;
28 static constexpr Address ReplaceInsertStorageOffset = 67;
29 
30 static constexpr Address InsertOffset = 50;
31 static constexpr Size InsertLength = 80;
32 static constexpr Address InsertStorageOffset = 67;
33 
34 static constexpr Address RemovedStart = 40;
35 static constexpr Address RemovedEnd = 78;
36 static constexpr Size RemovedWidth = RemovedEnd - RemovedStart + 1;
37 static constexpr Address RemovedOldStorageOffset = 23;
38 
createPieceTableChange()39 AbstractPieceTableChange* GroupPieceTableChangeAbstractPieceTableChangeIfTest::createPieceTableChange()
40 {
41     const Piece replacedPiece(AddressRange::fromWidth(ReplacedOldStorageOffset, ReplacedWidth), Piece::ChangeStorage);
42     const Piece removedPiece(AddressRange::fromWidth(RemovedOldStorageOffset, RemovedWidth), Piece::ChangeStorage);
43 
44     ReplacePieceTableChange* replaceChange =
45         new ReplacePieceTableChange(AddressRange(ReplacedStart, ReplacedEnd),
46                                     ReplaceLength, ReplaceInsertStorageOffset,
47                                     PieceList(replacedPiece));
48     InsertPieceTableChange* insertChange =
49         new InsertPieceTableChange(InsertOffset, InsertLength, InsertStorageOffset);
50     RemovePieceTableChange* removeChange =
51         new RemovePieceTableChange(AddressRange(RemovedStart, RemovedEnd), PieceList(removedPiece));
52 
53     GroupPieceTableChange* pieceTableChange =
54         new GroupPieceTableChange(0, QString());
55 
56     pieceTableChange->appendChange(replaceChange);
57     pieceTableChange->appendChange(insertChange);
58     pieceTableChange->appendChange(removeChange);
59 
60     return pieceTableChange;
61 }
changePieceTable(PieceTable * pieceTable)62 void GroupPieceTableChangeAbstractPieceTableChangeIfTest::changePieceTable(PieceTable* pieceTable)
63 {
64     pieceTable->replace(AddressRange(ReplacedStart, ReplacedEnd), ReplaceLength, ReplaceInsertStorageOffset);
65     pieceTable->insert(InsertOffset, InsertLength, InsertStorageOffset);
66     pieceTable->remove(AddressRange(RemovedStart, RemovedEnd));
67 }
68 
deletePieceTableChange(AbstractPieceTableChange * pieceTableChange)69 void GroupPieceTableChangeAbstractPieceTableChangeIfTest::deletePieceTableChange(
70     AbstractPieceTableChange* pieceTableChange)
71 {
72     delete pieceTableChange;
73 }
74 
75 }
76 
77 QTEST_GUILESS_MAIN(KPieceTable::GroupPieceTableChangeAbstractPieceTableChangeIfTest)
78