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

0001 /*
0002     SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include <KItinerary/AbstractExtractor>
0008 #include <KItinerary/ExtractorDocumentNode>
0009 #include <KItinerary/ExtractorDocumentNodeFactory>
0010 #include <KItinerary/ExtractorEngine>
0011 #include <KItinerary/ExtractorRepository>
0012 #include <KItinerary/ScriptExtractor>
0013 
0014 #include <QObject>
0015 #include <QTest>
0016 
0017 using namespace KItinerary;
0018 
0019 class ExtractorRepositoryTest : public QObject
0020 {
0021     Q_OBJECT
0022 private Q_SLOTS:
0023     void testReload()
0024     {
0025         ExtractorRepository repo;
0026         const auto count = repo.extractors().size();
0027         QVERIFY(count > 0);
0028         QVERIFY(repo.extractorByName(u"chaos-communication-congress"));
0029         QVERIFY(!repo.extractorByName(u"I-DONT-EXIST"));
0030 
0031         repo.reload();
0032         QCOMPARE(repo.extractors().size(), count);
0033         QVERIFY(repo.extractorByName(u"chaos-communication-congress"));
0034         QVERIFY(!repo.extractorByName(u"I-DONT-EXIST"));
0035     }
0036 
0037     void testExtractorsForNode()
0038     {
0039         ExtractorEngine engine;
0040         std::vector<const AbstractExtractor*> extractors;
0041 
0042         auto root = engine.documentNodeFactory()->createNode(QStringLiteral("PNR:1234567890,TRAIN:12345,DOJ:dd-mm-yyyy,TIME:hh:mm,SL,A TO B,John Doe+2,S7 49 S7 52 S7 55,FARE:140,SC:10+PG CHGS."), u"text/plain");
0043         QVERIFY(!root.isNull());
0044         engine.extractorRepository()->extractorsForNode(root, extractors);
0045         QCOMPARE(extractors.size(), 1);
0046         QVERIFY(extractors[0]->name().startsWith(QLatin1StringView("irctc")));
0047         extractors.clear();
0048 
0049         root = engine.documentNodeFactory()->createNode(QStringLiteral("i0CVxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxX"), u"text/plain");
0050         QVERIFY(!root.isNull());
0051         engine.extractorRepository()->extractorsForNode(root, extractors);
0052         QCOMPARE(extractors.size(), 1);
0053         QVERIFY(extractors[0]->name().startsWith(QLatin1StringView("sncf")));
0054         QVERIFY(dynamic_cast<const ScriptExtractor*>(extractors[0]));
0055         extractors.clear();
0056 
0057         root = engine.documentNodeFactory()->createNode(QStringLiteral("M1DOE/JOHN            EXXX007 TXLBRUSN 2592 110"), u"text/plain");
0058         QVERIFY(!root.isNull());
0059         engine.extractorRepository()->extractorsForNode(root, extractors);
0060         QCOMPARE(extractors.size(), 0);
0061     }
0062 };
0063 
0064 QTEST_GUILESS_MAIN(ExtractorRepositoryTest)
0065 
0066 #include "extractorrepositorytest.moc"