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

0001 /*
0002   SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "knowledgedb/airportnametokenizer_p.h"
0008 
0009 #include <QObject>
0010 #include <QTest>
0011 
0012 using namespace KItinerary;
0013 
0014 #define s(x) QStringLiteral(x)
0015 
0016 class AirportNameTokenizerTest : public QObject
0017 {
0018     Q_OBJECT
0019 private Q_SLOTS:
0020     void testTokenize_data()
0021     {
0022         QTest::addColumn<QString>("text");
0023         QTest::addColumn<QStringList>("tokens");
0024 
0025         QTest::newRow("empty") << QString() << QStringList();
0026         QTest::newRow("no token") << s("1a0") << QStringList();
0027         QTest::newRow("single token") << s("ABC") << QStringList({s("ABC")});
0028         QTest::newRow("space") << s("abc  def") << QStringList({s("abc"), s("def")});
0029         QTest::newRow("linebreak") << s("abc\ndef") << QStringList({s("abc"), s("def")});
0030         QTest::newRow("leading space") << s("     abc def     ") << QStringList({s("abc"), s("def")});
0031         QTest::newRow("quotes") << s("„abc\" \'def\'") << QStringList({s("abc"), s("def")});
0032         QTest::newRow("dashes") << s("abc-def–ghi") << QStringList({s("abc"), s("def"), s("ghi")});
0033         QTest::newRow("short") << s("ab def gh") << QStringList({s("def")});
0034         QTest::newRow("parenthesis") << s("abc(def)") << QStringList({s("abc"), s("def")});
0035         QTest::newRow("numbers") << s("01 abc 02 def") << QStringList({s("abc"), s("def")});
0036         QTest::newRow("ampersand") << s("abc&def") << QStringList({s("abc"), s("def")});
0037         QTest::newRow("comma") << s("abc, def.") << QStringList({s("abc"), s("def")});
0038 
0039         QTest::newRow("SFO") << s("SFO/SAN FRANCISCO INTERNATIONAL") << QStringList({s("SFO"), s("SAN"), s("FRANCISCO"), s("INTERNATIONAL")});
0040     }
0041 
0042     void testTokenize()
0043     {
0044         QFETCH(QString, text);
0045         QFETCH(QStringList, tokens);
0046 
0047         AirportNameTokenizer tokenizer(text);
0048         const auto out = tokenizer.toStringList();
0049         QCOMPARE(out, tokens);
0050     }
0051 };
0052 
0053 QTEST_APPLESS_MAIN(AirportNameTokenizerTest)
0054 
0055 #include "airportnametokenizertest.moc"