File indexing completed on 2024-04-28 05:52:39
0001 /* 0002 This file is part of the Okteta Gui library, made within the KDE community. 0003 0004 SPDX-FileCopyrightText: 2006 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 "coordrangelisttest.hpp" 0010 0011 // test object 0012 #include <coordrangelist.hpp> 0013 // Qt 0014 #include <QTest> 0015 0016 namespace Okteta { 0017 0018 // local variables 0019 static constexpr LinePosition Pos1 = 15; 0020 static constexpr LinePosition Pos2 = 25; 0021 static constexpr Line Line1 = 10; 0022 static constexpr LineSize LineCount = 10; 0023 static constexpr Line Line2 = Line1 + LineCount - 1; 0024 static constexpr LineSize LineDistance = 5; 0025 static constexpr Line Line3 = Line2 + LineDistance; 0026 static constexpr Line Line4 = Line3 + LineCount - 1; 0027 0028 static constexpr Coord Start1(Pos1, Line1); 0029 static constexpr Coord End1(Pos2, Line2); 0030 static constexpr Coord Start2(Pos1, Line3); 0031 static constexpr Coord End2(Pos2, Line4); 0032 0033 void CoordRangeListTest::testSimpleConstructor() 0034 { 0035 CoordRangeList CoordRangeList; 0036 QVERIFY(CoordRangeList.isEmpty()); 0037 } 0038 0039 void CoordRangeListTest::testAddSingleSection() 0040 { 0041 CoordRangeList CoordRangeList; 0042 0043 CoordRange CoordRange(Start1, End1); 0044 CoordRangeList.addCoordRange(CoordRange); 0045 QCOMPARE(CoordRangeList.size(), 1); 0046 QCOMPARE(CoordRangeList.first(), CoordRange); 0047 } 0048 0049 void CoordRangeListTest::testAddJoinableSections() 0050 { 0051 CoordRangeList CoordRangeList; 0052 0053 CoordRange CoordRange1(Start1, End1); 0054 CoordRange CoordRange2(Start2, End2); 0055 // in front 0056 Coord OtherStart(0, 0); 0057 Coord OtherEnd = Start1; 0058 OtherEnd.goLeft(0); 0059 CoordRange OtherCoordRange(OtherStart, OtherEnd); 0060 CoordRangeList.addCoordRange(CoordRange1); 0061 CoordRangeList.addCoordRange(CoordRange2); 0062 CoordRangeList.addCoordRange(OtherCoordRange); 0063 0064 QCOMPARE(CoordRangeList.size(), 2); 0065 QCOMPARE(CoordRangeList.first(), CoordRange(OtherCoordRange.start(), CoordRange1.end())); 0066 QCOMPARE(CoordRangeList.last(), CoordRange2); 0067 0068 // in the middle, with first 0069 CoordRangeList.clear(); 0070 OtherStart = End1; 0071 OtherStart.goRight(0); 0072 OtherEnd = Start2; 0073 OtherEnd.goLeft(1); 0074 OtherCoordRange.set(OtherStart, OtherEnd); 0075 CoordRangeList.addCoordRange(CoordRange1); 0076 CoordRangeList.addCoordRange(CoordRange2); 0077 CoordRangeList.addCoordRange(OtherCoordRange); 0078 0079 QCOMPARE(CoordRangeList.size(), 2); 0080 QCOMPARE(CoordRangeList.first(), CoordRange(CoordRange1.start(), OtherCoordRange.end())); 0081 QCOMPARE(CoordRangeList.last(), CoordRange2); 0082 0083 // in the middle, with both 0084 CoordRangeList.clear(); 0085 OtherEnd.goRight(1); 0086 OtherCoordRange.setEnd(OtherEnd); 0087 CoordRangeList.addCoordRange(CoordRange1); 0088 CoordRangeList.addCoordRange(CoordRange2); 0089 CoordRangeList.addCoordRange(OtherCoordRange); 0090 0091 QCOMPARE(CoordRangeList.size(), 1); 0092 QCOMPARE(CoordRangeList.first(), CoordRange(CoordRange1.start(), CoordRange2.end())); 0093 0094 // in the middle, with last 0095 CoordRangeList.clear(); 0096 OtherStart.goRight(1); 0097 OtherCoordRange.setStart(OtherStart); 0098 CoordRangeList.addCoordRange(CoordRange1); 0099 CoordRangeList.addCoordRange(CoordRange2); 0100 CoordRangeList.addCoordRange(OtherCoordRange); 0101 0102 QCOMPARE(CoordRangeList.size(), 2); 0103 QCOMPARE(CoordRangeList.first(), CoordRange1); 0104 QCOMPARE(CoordRangeList.last(), CoordRange(OtherCoordRange.start(), CoordRange2.end())); 0105 0106 // behind 0107 CoordRangeList.clear(); 0108 OtherStart = End2; 0109 OtherStart.goRight(0); 0110 OtherEnd = OtherStart; 0111 OtherEnd.goDown(LineCount); 0112 OtherCoordRange.set(OtherStart, OtherEnd); 0113 CoordRangeList.addCoordRange(CoordRange1); 0114 CoordRangeList.addCoordRange(CoordRange2); 0115 CoordRangeList.addCoordRange(OtherCoordRange); 0116 0117 QCOMPARE(CoordRangeList.size(), 2); 0118 QCOMPARE(CoordRangeList.first(), CoordRange1); 0119 QCOMPARE(CoordRangeList.last(), CoordRange(CoordRange2.start(), OtherCoordRange.end())); 0120 } 0121 0122 void CoordRangeListTest::testAddNonJoinableSections() 0123 { 0124 CoordRangeList CoordRangeList; 0125 0126 CoordRange CoordRange1(Start1, End1); 0127 CoordRange CoordRange2(Start2, End2); 0128 // in front 0129 Coord OtherStart(0, 0); 0130 Coord OtherEnd = Start1; 0131 OtherEnd.goLeft(2); 0132 CoordRange OtherCoordRange(OtherStart, OtherEnd); 0133 CoordRangeList.addCoordRange(CoordRange1); 0134 CoordRangeList.addCoordRange(CoordRange2); 0135 CoordRangeList.addCoordRange(OtherCoordRange); 0136 0137 QCOMPARE(CoordRangeList.size(), 3); 0138 QCOMPARE(CoordRangeList.first(), OtherCoordRange); 0139 QCOMPARE(CoordRangeList.last(), CoordRange2); 0140 0141 // in the middle 0142 CoordRangeList.clear(); 0143 OtherStart = End1; 0144 OtherStart.goRight(2); 0145 OtherEnd = Start2; 0146 OtherEnd.goLeft(2); 0147 OtherCoordRange.set(OtherStart, OtherEnd); 0148 CoordRangeList.addCoordRange(CoordRange1); 0149 CoordRangeList.addCoordRange(CoordRange2); 0150 CoordRangeList.addCoordRange(OtherCoordRange); 0151 0152 QCOMPARE(CoordRangeList.size(), 3); 0153 QCOMPARE(CoordRangeList.first(), CoordRange1); 0154 QCOMPARE(CoordRangeList.last(), CoordRange2); 0155 0156 // behind 0157 CoordRangeList.clear(); 0158 OtherStart = End2; 0159 OtherStart.goRight(2); 0160 OtherEnd = OtherStart; 0161 OtherEnd.goDown(LineCount); 0162 OtherCoordRange.set(OtherStart, OtherEnd); 0163 CoordRangeList.addCoordRange(CoordRange1); 0164 CoordRangeList.addCoordRange(CoordRange2); 0165 CoordRangeList.addCoordRange(OtherCoordRange); 0166 0167 QCOMPARE(CoordRangeList.size(), 3); 0168 QCOMPARE(CoordRangeList.first(), CoordRange1); 0169 QCOMPARE(CoordRangeList.last(), OtherCoordRange); 0170 } 0171 0172 } 0173 0174 QTEST_MAIN(Okteta::CoordRangeListTest) 0175 0176 #include "moc_coordrangelisttest.cpp"