File indexing completed on 2024-04-28 05:52:32

0001 /*
0002     This file is part of the Okteta Core library, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2008 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 "arraychangemetricstest.hpp"
0010 
0011 // test object
0012 #include <arraychangemetrics.hpp>
0013 // Qt
0014 #include <QTest>
0015 
0016 namespace Okteta {
0017 
0018 // local variables
0019 static constexpr Address Offset = 15;
0020 
0021 static constexpr Size LengthDiff = 5;
0022 static constexpr Size InsertLength = 15;
0023 static constexpr Size SmallerRemoveLength = InsertLength - LengthDiff;
0024 
0025 static constexpr Size FirstLength = 15;
0026 static constexpr Address SecondOffset = Offset + FirstLength;
0027 static constexpr Size SecondLength = 10;
0028 static constexpr Address SecondEnd = SecondOffset + SecondLength - 1;
0029 
0030 void ArrayChangeMetricsTest::testConstructorAsReplacement()
0031 {
0032     ArrayChangeMetrics change = ArrayChangeMetrics::asReplacement(Offset, SmallerRemoveLength, InsertLength);
0033 
0034     QVERIFY(change.isValid());
0035     QCOMPARE(change.offset(), Offset);
0036     QCOMPARE(change.removeLength(), SmallerRemoveLength);
0037     QCOMPARE(change.insertLength(), InsertLength);
0038     QCOMPARE(change.lengthChange(), LengthDiff);
0039 }
0040 
0041 void ArrayChangeMetricsTest::testConstructorAsSwapping()
0042 {
0043     ArrayChangeMetrics change = ArrayChangeMetrics::asSwapping(Offset, SecondOffset, SecondLength);
0044 
0045     QVERIFY(change.isValid());
0046     QCOMPARE(change.offset(), Offset);
0047     QCOMPARE(change.firstLength(), FirstLength);
0048     QCOMPARE(change.secondStart(), SecondOffset);
0049     QCOMPARE(change.secondEnd(), SecondEnd);
0050     QCOMPARE(change.secondLength(), SecondLength);
0051 }
0052 
0053 void ArrayChangeMetricsTest::testRevert()
0054 {
0055     ArrayChangeMetrics replacement = ArrayChangeMetrics::asReplacement(Offset, SmallerRemoveLength, InsertLength);
0056     replacement.revert();
0057 
0058     QVERIFY(replacement.isValid());
0059     QCOMPARE(replacement.offset(), Offset);
0060     QCOMPARE(replacement.removeLength(), InsertLength);
0061     QCOMPARE(replacement.insertLength(), SmallerRemoveLength);
0062     QCOMPARE(replacement.lengthChange(), -LengthDiff);
0063 
0064     replacement.revert();
0065 
0066     QVERIFY(replacement.isValid());
0067     QCOMPARE(replacement.offset(), Offset);
0068     QCOMPARE(replacement.removeLength(), SmallerRemoveLength);
0069     QCOMPARE(replacement.insertLength(), InsertLength);
0070     QCOMPARE(replacement.lengthChange(), LengthDiff);
0071 
0072     ArrayChangeMetrics swapping = ArrayChangeMetrics::asSwapping(Offset, SecondOffset, SecondLength);
0073     swapping.revert();
0074 
0075     QVERIFY(swapping.isValid());
0076     QCOMPARE(swapping.offset(), Offset);
0077     QCOMPARE(swapping.firstLength(), SecondLength);
0078     QCOMPARE(swapping.secondStart(), Offset + SecondLength);
0079     QCOMPARE(swapping.secondEnd(), SecondEnd);
0080     QCOMPARE(swapping.secondLength(), FirstLength);
0081 
0082     swapping.revert();
0083 
0084     QVERIFY(swapping.isValid());
0085     QCOMPARE(swapping.offset(), Offset);
0086     QCOMPARE(swapping.firstLength(), FirstLength);
0087     QCOMPARE(swapping.secondStart(), SecondOffset);
0088     QCOMPARE(swapping.secondEnd(), SecondEnd);
0089     QCOMPARE(swapping.secondLength(), SecondLength);
0090 }
0091 
0092 }
0093 
0094 QTEST_GUILESS_MAIN(Okteta::ArrayChangeMetricsTest)
0095 
0096 #include "moc_arraychangemetricstest.cpp"