File indexing completed on 2024-05-19 05:17:52

0001 /*
0002     SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org>
0003     SPDX-License-Identifier: LGPL-2.0-or-later
0004 */
0005 
0006 #include "testhelpers.h"
0007 
0008 #include "tickettokencomparator_p.h"
0009 
0010 #include <QTest>
0011 
0012 using namespace KItinerary;
0013 
0014 #define s(x) QStringLiteral(x)
0015 
0016 class TicketTokenComparatorTest : public QObject
0017 {
0018     Q_OBJECT
0019 private Q_SLOTS:
0020     void testNonEqual_data()
0021     {
0022         QTest::addColumn<QVariant>("lhs");
0023         QTest::addColumn<QVariant>("rhs");
0024 
0025         QTest::newRow("type mismatch") << QVariant(s("123456")) << QVariant(QByteArray("123456"));
0026 
0027         const auto uic = Test::readFile(QStringLiteral(SOURCE_DIR "/uic918-3/valid/Testw_VOW8XG6_A9E8DXL_0.bin"));
0028         auto uic2 = uic;
0029         uic2[10] = 'X'; // changes the signature key id
0030         QTest::newRow("uic-semantic-nonequal") << QVariant(uic) << QVariant(uic2);
0031     }
0032 
0033     void testNonEqual()
0034     {
0035         QFETCH(QVariant, lhs);
0036         QFETCH(QVariant, rhs);
0037 
0038         QVERIFY(!TicketTokenComparator::isSame(lhs, rhs));
0039         QVERIFY(!TicketTokenComparator::isSame(rhs, lhs));
0040     }
0041 
0042     void testEqual_data()
0043     {
0044         QTest::addColumn<QVariant>("lhs");
0045         QTest::addColumn<QVariant>("rhs");
0046 
0047         QTest::newRow("both-empty") << QVariant() << QVariant();
0048         QTest::newRow("equal-qstring") << QVariant(s("123456")) << QVariant(s("123456"));
0049         QTest::newRow("equal-qbytearray") << QVariant(QByteArray("123456")) << QVariant(QByteArray("123456"));
0050         QTest::newRow("empty-qstring") << QVariant(s("123456")) << QVariant();
0051         QTest::newRow("empty-qbytearray") << QVariant(QByteArray("123456")) << QVariant();
0052 
0053         QTest::newRow("iata-prefix")
0054             << QVariant(s("M1DESMARAIS/LUC       EAB12C3 YULFRAAC 0834 326J003A0027 167>5321WW1325BAC 0014123456002001412346700100141234789012A0141234567890 1AC AC 1234567890123    4PCYLX58Z^108ABCDEFGH"))
0055             << QVariant(s("M1DESMARAIS/LUC       EABC123 YULFRAAC 0834 326J001A0025 100"));
0056 
0057         const auto uic = Test::readFile(QStringLiteral(SOURCE_DIR "/uic918-3/valid/Testw_VOW8XG6_A9E8DXL_0.bin"));
0058         auto uic2 = uic;
0059         uic2[32] = 0x42; // changes the signature
0060         QTest::newRow("uic-byte-equal") << QVariant(uic) << QVariant(uic);
0061         QTest::newRow("uic-semantic-equal") << QVariant(uic) << QVariant(uic2);
0062     }
0063 
0064     void testEqual()
0065     {
0066         QFETCH(QVariant, lhs);
0067         QFETCH(QVariant, rhs);
0068 
0069         QEXPECT_FAIL("iata-prefix", "IATA BCBP token comparison not implemented yet", Abort);
0070         QVERIFY(TicketTokenComparator::isSame(lhs, rhs));
0071         QVERIFY(TicketTokenComparator::isSame(rhs, lhs));
0072     }
0073 };
0074 
0075 QTEST_GUILESS_MAIN(TicketTokenComparatorTest)
0076 
0077 #include "tickettokencomparatortest.moc"