File indexing completed on 2024-05-12 05:17:32

0001 /*
0002     SPDX-FileCopyrightText: 2022 Volker Krause <vkrause@kde.org>
0003     SPDX-License-Identifier: LGPL-2.0-or-later
0004 */
0005 
0006 #include "asn1/uperdecoder.h"
0007 #include <asn1/uperdecoder.cpp>
0008 #include <asn1/bitvectorview.cpp>
0009 
0010 #include <QDebug>
0011 #include <QObject>
0012 #include <QTest>
0013 
0014 using namespace KItinerary;
0015 
0016 class UPERDecoderTest : public QObject
0017 {
0018     Q_OBJECT
0019 private Q_SLOTS:
0020     void testReadNumbers()
0021     {
0022         auto data = QByteArray::fromHex("723004D580D1845E168AEAE4C2D2D840845CAC5C500550E8");
0023         UPERDecoder d(BitVectorView(std::string_view(data.constData(), data.size())));
0024         QCOMPARE(d.readBoolean(), false);
0025         QCOMPARE(d.readBitset<4>(), std::bitset<4>(0b1110));
0026         QCOMPARE(d.offset(), 5);
0027         QCOMPARE(d.readBoolean(), false);
0028         QCOMPARE(d.readBitset<14>(), std::bitset<14>(0b10001100000000));
0029         QCOMPARE(d.offset(), 20);
0030         QCOMPARE(d.readConstrainedWholeNumber(1, 32000), 9901);
0031         QCOMPARE(d.offset(), 35);
0032         QCOMPARE(d.readConstrainedWholeNumber(2016, 2269), 2022);
0033         QCOMPARE(d.offset(), 43);
0034         QCOMPARE(d.readConstrainedWholeNumber(1, 366), 281);
0035         QCOMPARE(d.offset(), 52);
0036         QCOMPARE(d.readConstrainedWholeNumber(0, 1440), 559);
0037         QCOMPARE(d.offset(), 63);
0038         QCOMPARE(d.readUtf8String(), QLatin1StringView("Eurail B.V."));
0039         QCOMPARE(d.offset(), 159);
0040         QCOMPARE(d.readBoolean(), false);
0041         QCOMPARE(d.readBoolean(), false);
0042         QCOMPARE(d.readBoolean(), true);
0043         QCOMPARE(d.offset(), 162);
0044 
0045         data = QByteArray::fromHex("22FB162E1BC9");
0046         d = UPERDecoder(BitVectorView(std::string_view(data.constData(), data.size())));
0047         d.seek(13);
0048         QCOMPARE(d.readIA5String(4, 4), "1187");
0049     }
0050 };
0051 
0052 QTEST_APPLESS_MAIN(UPERDecoderTest)
0053 
0054 #include "uperdecodertest.moc"