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 <text/terminalfinder.cpp>
0007 
0008 #include <KItinerary/Flight>
0009 #include <KItinerary/Place>
0010 
0011 #include <QTest>
0012 
0013 using namespace KItinerary;
0014 
0015 #define s(x) QStringLiteral(x)
0016 
0017 class TerminalFinderTest : public QObject
0018 {
0019     Q_OBJECT
0020 private Q_SLOTS:
0021     void testTerminalFindingAtStart_data()
0022     {
0023         QTest::addColumn<QString>("input");
0024         QTest::addColumn<int>("len");
0025         QTest::addColumn<QString>("terminalName");
0026 
0027         QTest::newRow("empty") << QString() << -1 << QString();
0028         QTest::newRow("no terminal") << s("Paris Charles de Gaulle") << -1 << QString();
0029         QTest::newRow("CDG 1") << s("PARIS, FR (CHARLES DE GAULLE), TERMINAL 2E") << -1 << QString();
0030         QTest::newRow("CDG 2") << s(" (Terminal 2D)") << 14 << s("2D");
0031         QTest::newRow("CDG 3") << s(" - AEROGARE 2") << 13 << s("2");
0032         QTest::newRow("LHR") << s("-Terminal 2") << 11 << s("2");
0033         QTest::newRow("MAD") << s(", TERMINAL 4S") << 13 << s("4S");
0034         QTest::newRow("DTW") << s(" TERMINAL EM") << 12 << s("EM");
0035         QTest::newRow("MRS1") << s(" - TERMINAL 1A") << 14 << s("1A");
0036         QTest::newRow("MRS2") << s(" - TERMINAL 1A\nmore data") << 14 << s("1A");
0037         QTest::newRow("GTW EN") << s(" (North Terminal)") << 17 << s("North");
0038         QTest::newRow("GTW DE") << s(" (Terminal Nord)") << 16 << s("Nord");
0039         QTest::newRow("TXL1") << s("(Terminal C)") << 12 << s("C");
0040         QTest::newRow("TXL2") << s("(Terminal C)  something else") << 12 << s("C");
0041         QTest::newRow("DEL1") << s(" T2") << 3 << s("2");
0042         QTest::newRow("DEL2") << s(" (T3)") << 5 << s("3");
0043         QTest::newRow("DEL3") << s(" T2 some other text") << 3 << s("2");
0044         QTest::newRow("DEL4") << s(" (T3) more information") << 5 << s("3");
0045         QTest::newRow("DEL5") << s(" (T1C) ") << 6 << s("1C");
0046         QTest::newRow("DEL6") << s(" T-3 (DEL)") << 4 << s("3");
0047         QTest::newRow("FRA") << s(", Terminal 2 (FRA)\nMadrid (MAD)") << 12 << s("2");
0048     }
0049 
0050     void testTerminalFindingAtStart()
0051     {
0052         QFETCH(QString, input);
0053         QFETCH(int, len);
0054         QFETCH(QString, terminalName);
0055 
0056         TerminalFinder f(u"^", u"(?=\\b|\\s|$)");
0057         const auto res = f.find(input);
0058         QCOMPARE(res.name, terminalName);
0059         QCOMPARE(res.start, len == -1 ? -1 : 0);
0060         QCOMPARE(res.end, len);
0061     }
0062 };
0063 
0064 QTEST_GUILESS_MAIN(TerminalFinderTest)
0065 
0066 #include "terminalfindertest.moc"