File indexing completed on 2024-05-05 17:58:03
0001 /* 0002 This file is part of the Okteta Core library, made within the KDE community. 0003 0004 SPDX-FileCopyrightText: 2007 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 "bookmarklisttest.hpp" 0010 0011 // test object 0012 #include <bookmarklist.hpp> 0013 // Qt 0014 #include <QVector> 0015 #include <QTest> 0016 0017 using namespace Okteta; 0018 0019 static constexpr int Offset1 = 7; 0020 static constexpr int Offset2 = 23; 0021 static constexpr int Offset3 = 45; 0022 static constexpr int Offset4 = 67; 0023 static constexpr int Distance12 = Offset2 - Offset1; 0024 static constexpr int Distance23 = Offset3 - Offset2; 0025 static constexpr int Distance34 = Offset4 - Offset3; 0026 static constexpr int Distance13 = Distance12 + Distance23; 0027 0028 void BookmarkListTest::testSimpleConstructor() 0029 { 0030 BookmarkList bookmarkList; 0031 0032 QVERIFY(bookmarkList.isEmpty()); 0033 } 0034 0035 void BookmarkListTest::testAddRemoveBookmark() 0036 { 0037 const Bookmark bookmark1(Offset1); 0038 const Bookmark bookmark2(Offset2); 0039 0040 BookmarkList bookmarkList; 0041 0042 bookmarkList.addBookmark(bookmark1); 0043 0044 QVERIFY(bookmarkList.first() == bookmark1); 0045 QVERIFY(!bookmarkList.isEmpty()); 0046 0047 bookmarkList.addBookmark(bookmark2); 0048 0049 QVERIFY(bookmarkList.first() == bookmark1); 0050 QVERIFY(!bookmarkList.isEmpty()); 0051 QCOMPARE(bookmarkList.count(), 2); 0052 0053 bookmarkList.removeBookmark(bookmark1); 0054 0055 QVERIFY(bookmarkList.first() == bookmark2); 0056 QVERIFY(!bookmarkList.isEmpty()); 0057 0058 bookmarkList.removeBookmark(bookmark2); 0059 0060 QVERIFY(bookmarkList.isEmpty()); 0061 } 0062 0063 void BookmarkListTest::testContains() 0064 { 0065 const Bookmark bookmark1(Offset1); 0066 const Bookmark bookmark2(Offset2); 0067 0068 BookmarkList bookmarkList; 0069 0070 QVERIFY(!bookmarkList.contains(bookmark1.offset())); 0071 QVERIFY(!bookmarkList.contains(bookmark2.offset())); 0072 0073 bookmarkList.addBookmark(bookmark1); 0074 QVERIFY(bookmarkList.contains(bookmark1.offset())); 0075 QVERIFY(!bookmarkList.contains(bookmark2.offset())); 0076 0077 bookmarkList.addBookmark(bookmark2); 0078 QVERIFY(bookmarkList.contains(bookmark1.offset())); 0079 QVERIFY(bookmarkList.contains(bookmark2.offset())); 0080 0081 bookmarkList.removeBookmark(bookmark2); 0082 QVERIFY(bookmarkList.contains(bookmark1.offset())); 0083 QVERIFY(!bookmarkList.contains(bookmark2.offset())); 0084 0085 bookmarkList.removeBookmark(bookmark1); 0086 QVERIFY(!bookmarkList.contains(bookmark1.offset())); 0087 QVERIFY(!bookmarkList.contains(bookmark2.offset())); 0088 } 0089 // TODO: these functions (in a variant) are now part of BookmarksConstIterator 0090 #if 0 0091 void BookmarkListTest::testPreviousFrom() 0092 { 0093 const Bookmark bookmark1(Offset1); 0094 const Bookmark bookmark2(Offset2); 0095 0096 BookmarkList bookmarkList; 0097 0098 bookmarkList.addBookmark(bookmark1); 0099 bookmarkList.addBookmark(bookmark2); 0100 0101 QVERIFY(bookmarkList.previousFrom(Offset1 - 1) == bookmarkList.end()); 0102 QVERIFY(*bookmarkList.previousFrom(Offset1) == bookmark1); 0103 QVERIFY(*bookmarkList.previousFrom(Offset2 - 1) == bookmark1); 0104 QVERIFY(*bookmarkList.previousFrom(Offset2) == bookmark2); 0105 QVERIFY(*bookmarkList.previousFrom(Offset2 + 1) == bookmark2); 0106 } 0107 0108 void BookmarkListTest::testNextFrom() 0109 { 0110 const Bookmark bookmark1(Offset1); 0111 const Bookmark bookmark2(Offset2); 0112 0113 BookmarkList bookmarkList; 0114 0115 bookmarkList.addBookmark(bookmark1); 0116 bookmarkList.addBookmark(bookmark2); 0117 0118 QVERIFY(*bookmarkList.nextFrom(Offset1 - 1) == bookmark1); 0119 QVERIFY(*bookmarkList.nextFrom(Offset1) == bookmark1); 0120 QVERIFY(*bookmarkList.nextFrom(Offset1 + 1) == bookmark2); 0121 QVERIFY(*bookmarkList.nextFrom(Offset2) == bookmark2); 0122 QVERIFY(bookmarkList.nextFrom(Offset2 + 1) == bookmarkList.end()); 0123 } 0124 #endif 0125 void BookmarkListTest::testAdjustToReplaced() 0126 { 0127 const Bookmark bookmark1(Offset1); 0128 const Bookmark bookmark2(Offset2); 0129 const Bookmark bookmark3(Offset3); 0130 0131 BookmarkList bookmarkList; 0132 0133 // replace after last -> no changes 0134 constexpr int behindOffset3 = Offset3 + 1; 0135 bookmarkList.addBookmark(bookmark1); 0136 bookmarkList.addBookmark(bookmark2); 0137 bookmarkList.addBookmark(bookmark3); 0138 bool adjusted = bookmarkList.adjustToReplaced(behindOffset3, 20, 19); 0139 0140 QCOMPARE(bookmarkList.count(), 3); 0141 QVERIFY(!bookmarkList.isEmpty()); 0142 QVERIFY(!adjusted); 0143 0144 // replace before first with same length -> no changes 0145 bookmarkList.clear(); 0146 bookmarkList.addBookmark(bookmark1); 0147 bookmarkList.addBookmark(bookmark2); 0148 bookmarkList.addBookmark(bookmark3); 0149 0150 adjusted = bookmarkList.adjustToReplaced(0, 5, 5); 0151 0152 QCOMPARE(bookmarkList.count(), 3); 0153 QVERIFY(!bookmarkList.isEmpty()); 0154 QVERIFY(!adjusted); 0155 0156 // replace after 1 and before 3 with same length 0157 constexpr int replaceLength = Distance13 - 1; 0158 constexpr int behindOffset1 = Offset1 + 1; 0159 bookmarkList.clear(); 0160 bookmarkList.addBookmark(bookmark1); 0161 bookmarkList.addBookmark(bookmark2); 0162 bookmarkList.addBookmark(bookmark3); 0163 bookmarkList.adjustToReplaced(behindOffset1, replaceLength, replaceLength); 0164 0165 QVERIFY(bookmarkList.first() == bookmark1); 0166 QVERIFY(bookmarkList.last() == bookmark3); 0167 QCOMPARE(bookmarkList.count(), 2); 0168 QVERIFY(!bookmarkList.isEmpty()); 0169 0170 // replace after 1 and before 3 with longer length 0171 constexpr int longer = 5; 0172 bookmarkList.clear(); 0173 bookmarkList.addBookmark(bookmark1); 0174 bookmarkList.addBookmark(bookmark2); 0175 bookmarkList.addBookmark(bookmark3); 0176 bookmarkList.adjustToReplaced(behindOffset1, replaceLength, replaceLength + longer); 0177 0178 QVERIFY(bookmarkList.first() == bookmark1); 0179 QCOMPARE(bookmarkList.last().offset(), bookmark3.offset() + longer); 0180 QCOMPARE(bookmarkList.count(), 2); 0181 QVERIFY(!bookmarkList.isEmpty()); 0182 0183 // replace after 1 and before 3 with shorter length 0184 constexpr int shorter = 5; 0185 bookmarkList.clear(); 0186 bookmarkList.addBookmark(bookmark1); 0187 bookmarkList.addBookmark(bookmark2); 0188 bookmarkList.addBookmark(bookmark3); 0189 bookmarkList.adjustToReplaced(behindOffset1, replaceLength, replaceLength - shorter); 0190 0191 QVERIFY(bookmarkList.first() == bookmark1); 0192 QCOMPARE(bookmarkList.last().offset(), bookmark3.offset() - shorter); 0193 QCOMPARE(bookmarkList.count(), 2); 0194 QVERIFY(!bookmarkList.isEmpty()); 0195 } 0196 0197 void BookmarkListTest::testAdjustToSwapped() 0198 { 0199 const Bookmark bookmark1(Offset1); 0200 const Bookmark bookmark2(Offset2); 0201 const Bookmark bookmark3_1(Offset3 - 1); 0202 const Bookmark bookmark3(Offset3); 0203 const Bookmark bookmark4(Offset4); 0204 0205 BookmarkList bookmarkList; 0206 0207 // move all between 1 and 3 right before 4 0208 constexpr int secondLength = Distance34; 0209 constexpr int firstLength = Distance13 - 1; 0210 constexpr int behindOffset1 = Offset1 + 1; 0211 bookmarkList.addBookmark(bookmark1); 0212 bookmarkList.addBookmark(bookmark2); 0213 bookmarkList.addBookmark(bookmark3_1); 0214 bookmarkList.addBookmark(bookmark3); 0215 bookmarkList.addBookmark(bookmark4); 0216 bool adjusted = bookmarkList.adjustToSwapped(behindOffset1, Offset3, secondLength); 0217 0218 QVector<int> newOffsets; 0219 newOffsets << bookmark1.offset() << bookmark3.offset() - firstLength << bookmark2.offset() + secondLength 0220 << bookmark3_1.offset() + secondLength << bookmark4.offset(); 0221 0222 QVERIFY(adjusted); 0223 QVERIFY(!bookmarkList.isEmpty()); 0224 QCOMPARE(bookmarkList.count(), 5); 0225 QVector<int>::ConstIterator oit = newOffsets.constBegin(); 0226 for (const Bookmark& bookmark : qAsConst(bookmarkList)) { 0227 QCOMPARE(bookmark.offset(), *oit++); 0228 } 0229 } 0230 0231 QTEST_GUILESS_MAIN(BookmarkListTest) 0232 0233 #include "moc_bookmarklisttest.cpp"