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"