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

0001 /*
0002     SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "../src/lib/jsapi/bitarray.h"
0008 
0009 #include <QByteArray>
0010 #include <QObject>
0011 #include <QTest>
0012 
0013 using namespace KItinerary::JsApi;
0014 
0015 class BitArrayTest : public QObject
0016 {
0017     Q_OBJECT
0018 private Q_SLOTS:
0019     void testReadNumber()
0020     {
0021         BitArray b(QByteArray::fromBase64("IBTCCBAC80gAAAAAAAQH6+9YD9WQiYlJAAAAAAAAZYSaAXLGTgFAAAAAAApgAEigkABAC2UjGEDlwAPyHE5wAAAALw=="));
0022 
0023         QCOMPARE(b.readNumberMSB(0, 8), 0x20);
0024         QCOMPARE(b.readNumberMSB(0, 16), 0x2014);
0025         QCOMPARE(b.readNumberMSB(0, 24), 0x2014C2);
0026         QCOMPARE(b.readNumberMSB(0, 32), 0x2014C208);
0027 
0028         QCOMPARE(b.readNumberMSB(0, 4), 0x2);
0029 
0030         QCOMPARE(b.readNumberMSB(14*8 + 4, 24), 8306421);
0031         QCOMPARE(b.readNumberMSB(18*8 + 3, 24), 8301700);
0032         QCOMPARE(b.readNumberMSB(22*8 + 2, 16), 9508);
0033 
0034         QCOMPARE(b.readNumberMSB(31*8 + 2, 7), 9);
0035         QCOMPARE(b.readNumberMSB(32*8 + 3, 4), 0xD);
0036 
0037         QCOMPARE(b.readNumberMSB(58*8 + 4, 32), 1059177703);
0038         QCOMPARE(b.readNumberMSB(58*8, 36), 1059177703);
0039 
0040         QCOMPARE(b.readNumberMSB(32*8 + 7, 49), 1592464900416);
0041 
0042         // exactly containing the last bit
0043         QCOMPARE(b.readNumberMSB(66*8, 8), 0x2F);
0044 
0045         // out of bounds reads
0046         QCOMPARE(b.readNumberMSB(66*8, 9), 0);
0047         QCOMPARE(b.readNumberMSB(67*8, 1), 0);
0048     }
0049 };
0050 
0051 QTEST_GUILESS_MAIN(BitArrayTest)
0052 
0053 #include "bitarraytest.moc"