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"