1 /* 2 SPDX-FileCopyrightText: 2017 Volker Krause <vkrause@kde.org> 3 4 SPDX-License-Identifier: MIT 5 */ 6 7 #include "../src/lib/bitvector_p.h" 8 #include "../src/lib/reedsolomon_p.h" 9 10 #include <QDebug> 11 #include <QObject> 12 #include <QTest> 13 14 Q_DECLARE_METATYPE(Prison::BitVector) 15 16 using namespace Prison; 17 18 class ReedSolomonTest : public QObject 19 { 20 Q_OBJECT 21 private Q_SLOTS: rsTest_data()22 void rsTest_data() 23 { 24 QTest::addColumn<int>("poly"); 25 QTest::addColumn<int>("symCount"); 26 QTest::addColumn<BitVector>("input"); 27 QTest::addColumn<BitVector>("output"); 28 29 BitVector in; 30 BitVector out; 31 out.appendMSB(0, 20); 32 QTest::newRow("empty") << (int)ReedSolomon::GF16 << 5 << in << out; 33 34 in.clear(); 35 out.clear(); 36 in.appendMSB(0x5c, 8); 37 out.appendMSB(7, 6); 38 out.appendMSB(5, 7); 39 out.appendMSB(0x4d, 7); 40 QTest::newRow("GF16") << (int)ReedSolomon::GF16 << 5 << in << out; 41 } 42 rsTest()43 void rsTest() 44 { 45 QFETCH(int, poly); 46 QFETCH(int, symCount); 47 QFETCH(BitVector, input); 48 QFETCH(BitVector, output); 49 50 ReedSolomon rs(poly, symCount); 51 const auto res = rs.encode(input); 52 QCOMPARE(res.size(), output.size()); 53 if (res != output) { 54 qDebug() << "Actual :" << res; 55 qDebug() << "Expected:" << output; 56 } 57 QCOMPARE(res, output); 58 } 59 }; 60 61 QTEST_APPLESS_MAIN(ReedSolomonTest) 62 63 #include "reedsolomontest.moc" 64