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

0001 /*
0002     SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "vdv/vdvticketparser.h"
0008 
0009 #include <QObject>
0010 #include <QTest>
0011 
0012 using namespace KItinerary;
0013 
0014 class VdvTicketTest : public QObject
0015 {
0016     Q_OBJECT
0017 private Q_SLOTS:
0018     void testMaybeVdvTicket_data()
0019     {
0020         QTest::addColumn<QByteArray>("input");
0021         QTest::addColumn<bool>("isVdv");
0022 
0023         QTest::newRow("empty") << QByteArray() << false;
0024         QTest::newRow("null") << QByteArray(352, 0x0) << false;
0025 
0026         QByteArray b(352, 0x0);
0027         b[0] = (char)0x9E;
0028         b[1] = (char)0x81;
0029         b[2] = (char)0x80;
0030         b[131] = (char)0x9A;
0031         b[132] = (char)0x05;
0032         b[133] = 'V';
0033         b[134] = 'D';
0034         b[135] = 'V';
0035         QTest::newRow("valid min length") << b << true;
0036     }
0037 
0038     void testMaybeVdvTicket()
0039     {
0040         QFETCH(QByteArray, input);
0041         QFETCH(bool, isVdv);
0042         QCOMPARE(VdvTicketParser::maybeVdvTicket(input), isVdv);
0043     }
0044 
0045     void testTicket()
0046     {
0047         auto data = QByteArray::fromHex("00f569d018f111d017d43b7d68003b8268008532da110000030000000002000992000000000000db0c000000000000000000000000dc0f1117d40000000004b000000000000018f110007a18f13b7974cfd400000017d48a00000105d601000105d602474200000000005644561400");
0048 
0049         VdvTicket ticket(data, {});
0050         QCOMPARE(ticket.issuerId(), 6385);
0051         QCOMPARE(ticket.beginDateTime(), QDateTime({2019, 11, 29}, {13, 0}));
0052         QCOMPARE(ticket.endDateTime(), QDateTime({2019, 12, 2}, {13, 0}));
0053         QCOMPARE(ticket.serviceClass(), VdvTicket::SecondClass);
0054         QCOMPARE(ticket.person(), Person());
0055         QCOMPARE(ticket.ticketNumber(), QStringLiteral("16083408"));
0056 
0057         data = QByteArray::fromHex("001a4bab1874283e184434ba000134bb18008541da110001000000000003000000000000001a4bdb1502199610144B6174696523447261676F6E00000000dc150000000000000000000000000000000000000000001874110064187434b87128ff7a126918748a0000062e9e0100062e9e007d895644561107");
0058         ticket = VdvTicket(data, {});
0059         QCOMPARE(ticket.issuerId(), 6260);
0060         QCOMPARE(ticket.beginDateTime(), QDateTime({2016, 5, 26}, {0, 0, 2}));
0061         QCOMPARE(ticket.endDateTime(), QDateTime({2016, 5, 27}, {3, 0}));
0062         QCOMPARE(ticket.serviceClass(), VdvTicket::FirstClassUpgrade);
0063         QCOMPARE(ticket.person().familyName(), QStringLiteral("Dragon"));
0064         QCOMPARE(ticket.person().givenName(), QStringLiteral("Katie"));
0065         QCOMPARE(ticket.ticketNumber(), QStringLiteral("1723307"));
0066 
0067         data = QByteArray::fromHex("00f569d018f111d017d43b7d68003b8268008532da110000030000000000000992000000000000db0c00000000004B33654044346Edc0f1117d40000000004b000000000000018f110007a18f13b7974cfd400000017d48a00000105d601000105d602474200000000005644561400");
0068         ticket = VdvTicket(data, {});
0069         QCOMPARE(ticket.serviceClass(), VdvTicket::UnknownClass);
0070         QCOMPARE(ticket.person().familyName(), QStringLiteral("D"));
0071         QCOMPARE(ticket.person().givenName(), QStringLiteral("K"));
0072         QCOMPARE(ticket.ticketNumber(), QStringLiteral("16083408"));
0073     }
0074 };
0075 
0076 QTEST_APPLESS_MAIN(VdvTicketTest)
0077 
0078 #include "vdvtickettest.moc"