File indexing completed on 2024-04-28 05:52:31
0001 /* 0002 This file is part of the Okteta Core 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 "addressrangelisttest.hpp" 0010 0011 // test object 0012 #include <addressrangelist.hpp> 0013 // Qt 0014 #include <QTest> 0015 0016 namespace Okteta { 0017 0018 // local variables 0019 static constexpr Address Start1 = 15; 0020 static constexpr Address End1 = 27; 0021 static constexpr Size Width = End1 - Start1 + 1; 0022 static constexpr Size Distance = 10; 0023 static constexpr Address Start2 = End1 + Distance; 0024 static constexpr Address End2 = Start2 + Width - 1; 0025 0026 void AddressRangeListTest::testSimpleConstructor() 0027 { 0028 AddressRangeList addressRangeList; 0029 QVERIFY(addressRangeList.isEmpty()); 0030 } 0031 0032 void AddressRangeListTest::testAddSingleRange() 0033 { 0034 AddressRangeList addressRangeList; 0035 0036 AddressRange addressRange(Start1, End1); 0037 addressRangeList.addAddressRange(addressRange); 0038 QCOMPARE(addressRangeList.size(), 1); 0039 QCOMPARE(addressRangeList.first(), addressRange); 0040 } 0041 0042 void AddressRangeListTest::testAddJoinableRanges() 0043 { 0044 AddressRangeList addressRangeList; 0045 0046 AddressRange addressRange1(Start1, End1); 0047 AddressRange addressRange2(Start2, End2); 0048 // in front 0049 AddressRange otherAddressRange(0, Start1 - 1); 0050 addressRangeList.addAddressRange(addressRange1); 0051 addressRangeList.addAddressRange(addressRange2); 0052 addressRangeList.addAddressRange(otherAddressRange); 0053 0054 QCOMPARE(addressRangeList.size(), 2); 0055 QCOMPARE(addressRangeList.first(), AddressRange(otherAddressRange.start(), addressRange1.end())); 0056 QCOMPARE(addressRangeList.last(), addressRange2); 0057 0058 // in the middle, with first 0059 addressRangeList.clear(); 0060 otherAddressRange.set(End1 + 1, Start2 - 2); 0061 addressRangeList.addAddressRange(addressRange1); 0062 addressRangeList.addAddressRange(addressRange2); 0063 addressRangeList.addAddressRange(otherAddressRange); 0064 0065 QCOMPARE(addressRangeList.size(), 2); 0066 QCOMPARE(addressRangeList.first(), AddressRange(addressRange1.start(), otherAddressRange.end())); 0067 QCOMPARE(addressRangeList.last(), addressRange2); 0068 0069 // in the middle, with both 0070 addressRangeList.clear(); 0071 otherAddressRange.set(End1 + 1, Start2 - 1); 0072 addressRangeList.addAddressRange(addressRange1); 0073 addressRangeList.addAddressRange(addressRange2); 0074 addressRangeList.addAddressRange(otherAddressRange); 0075 0076 QCOMPARE(addressRangeList.size(), 1); 0077 QCOMPARE(addressRangeList.first(), AddressRange(addressRange1.start(), addressRange2.end())); 0078 0079 // in the middle, with last 0080 addressRangeList.clear(); 0081 otherAddressRange.set(End1 + 2, Start2 - 1); 0082 addressRangeList.addAddressRange(addressRange1); 0083 addressRangeList.addAddressRange(addressRange2); 0084 addressRangeList.addAddressRange(otherAddressRange); 0085 0086 QCOMPARE(addressRangeList.size(), 2); 0087 QCOMPARE(addressRangeList.first(), addressRange1); 0088 QCOMPARE(addressRangeList.last(), AddressRange(otherAddressRange.start(), addressRange2.end())); 0089 0090 // behind 0091 addressRangeList.clear(); 0092 otherAddressRange.setByWidth(End2 + 1, Width); 0093 addressRangeList.addAddressRange(addressRange1); 0094 addressRangeList.addAddressRange(addressRange2); 0095 addressRangeList.addAddressRange(otherAddressRange); 0096 0097 QCOMPARE(addressRangeList.size(), 2); 0098 QCOMPARE(addressRangeList.first(), addressRange1); 0099 QCOMPARE(addressRangeList.last(), AddressRange(addressRange2.start(), otherAddressRange.end())); 0100 } 0101 0102 void AddressRangeListTest::testAddNonJoinableRanges() 0103 { 0104 AddressRangeList addressRangeList; 0105 0106 AddressRange addressRange1(Start1, End1); 0107 AddressRange addressRange2(Start2, End2); 0108 // in front 0109 AddressRange otherAddressRange(0, Start1 - 2); 0110 addressRangeList.addAddressRange(addressRange1); 0111 addressRangeList.addAddressRange(addressRange2); 0112 addressRangeList.addAddressRange(otherAddressRange); 0113 0114 QCOMPARE(addressRangeList.size(), 3); 0115 QCOMPARE(addressRangeList.first(), otherAddressRange); 0116 QCOMPARE(addressRangeList.last(), addressRange2); 0117 0118 // in the middle 0119 addressRangeList.clear(); 0120 otherAddressRange.set(End1 + 2, Start2 - 2); 0121 addressRangeList.addAddressRange(addressRange1); 0122 addressRangeList.addAddressRange(addressRange2); 0123 addressRangeList.addAddressRange(otherAddressRange); 0124 0125 QCOMPARE(addressRangeList.size(), 3); 0126 QCOMPARE(addressRangeList.first(), addressRange1); 0127 QCOMPARE(addressRangeList.last(), addressRange2); 0128 0129 // behind 0130 addressRangeList.clear(); 0131 otherAddressRange.setByWidth(End2 + 2, Width); 0132 addressRangeList.addAddressRange(addressRange1); 0133 addressRangeList.addAddressRange(addressRange2); 0134 addressRangeList.addAddressRange(otherAddressRange); 0135 0136 QCOMPARE(addressRangeList.size(), 3); 0137 QCOMPARE(addressRangeList.first(), addressRange1); 0138 QCOMPARE(addressRangeList.last(), otherAddressRange); 0139 } 0140 0141 } 0142 0143 QTEST_GUILESS_MAIN(Okteta::AddressRangeListTest) 0144 0145 #include "moc_addressrangelisttest.cpp"