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"