File indexing completed on 2024-05-12 05:17:32
0001 /* 0002 SPDX-FileCopyrightText: 2017 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include <KItinerary/ExtractorDocumentNode> 0008 #include <KItinerary/ExtractorDocumentProcessor> 0009 #include <KItinerary/ExtractorEngine> 0010 #include <KItinerary/ExtractorResult> 0011 0012 #include <QDebug> 0013 #include <QDir> 0014 #include <QFile> 0015 #include <QJsonDocument> 0016 #include <QObject> 0017 #include <QTest> 0018 0019 using namespace KItinerary; 0020 0021 class StructuredDataExtractorTest : public QObject 0022 { 0023 Q_OBJECT 0024 private Q_SLOTS: 0025 void testExtract_data() 0026 { 0027 QTest::addColumn<QString>("inputFile"); 0028 QTest::addColumn<QString>("jsonFile"); 0029 0030 QDir dir(QStringLiteral(SOURCE_DIR "/structureddata")); 0031 const auto lst = dir.entryList(QStringList(QStringLiteral("*.html")), QDir::Files | QDir::Readable | QDir::NoSymLinks); 0032 for (const auto &file : lst) { 0033 const QString refFile = dir.path() + QLatin1Char('/') + file.left(file.size() - 5) + QStringLiteral(".json"); 0034 if (!QFile::exists(refFile)) { 0035 qDebug() << "reference file" << refFile << "does not exist, skipping test file" << file; 0036 continue; 0037 } 0038 QTest::newRow(file.toLatin1().constData()) << QString(dir.path() + QLatin1Char('/') + file) << refFile; 0039 } 0040 } 0041 0042 void testExtract() 0043 { 0044 QFETCH(QString, inputFile); 0045 QFETCH(QString, jsonFile); 0046 0047 QFile f(inputFile); 0048 QVERIFY(f.open(QFile::ReadOnly)); 0049 0050 ExtractorEngine engine; 0051 engine.setData(f.readAll()); 0052 auto node = engine.rootDocumentNode(); 0053 node.processor()->preExtract(node, &engine); 0054 0055 QFile ref(jsonFile); 0056 QVERIFY(ref.open(QFile::ReadOnly)); 0057 const auto doc = QJsonDocument::fromJson(ref.readAll()); 0058 QVERIFY(doc.isArray()); 0059 0060 auto data = node.result().jsonLdResult(); 0061 if (data != doc.array()) { 0062 qDebug().noquote() << QJsonDocument(data).toJson(); 0063 } 0064 QCOMPARE(data, doc.array()); 0065 } 0066 }; 0067 0068 QTEST_APPLESS_MAIN(StructuredDataExtractorTest) 0069 0070 #include "structureddataextractortest.moc"