Warning, file /frameworks/kfilemetadata/autotests/fb2extractortest.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2022 Kai Uwe Broulik <kde@broulik.de> 0003 0004 SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #include "fb2extractortest.h" 0008 #include "extractors/fb2extractor.h" 0009 #include "indexerextractortestsconfig.h" 0010 #include "mimeutils.h" 0011 #include "simpleextractionresult.h" 0012 0013 #include <QMimeDatabase> 0014 #include <QTest> 0015 0016 using namespace KFileMetaData; 0017 0018 QString Fb2ExtractorTest::testFilePath(const QString &fileName) const 0019 { 0020 return QLatin1String(INDEXER_TESTS_SAMPLE_FILES_PATH) + QLatin1Char('/') + fileName; 0021 } 0022 0023 void Fb2ExtractorTest::testNoExtraction_data() 0024 { 0025 QTest::addColumn<QString>("fileName"); 0026 0027 QTest::addRow("uncompressed") << QStringLiteral("test.fb2"); 0028 QTest::addRow("compressed") << QStringLiteral("test.fb2.zip"); 0029 } 0030 0031 void Fb2ExtractorTest::testNoExtraction() 0032 { 0033 QFETCH(QString, fileName); 0034 0035 Fb2Extractor plugin{this}; 0036 0037 const QString path = testFilePath(fileName); 0038 QMimeDatabase mimeDb; 0039 QString mimeType = MimeUtils::strictMimeType(path, mimeDb).name(); 0040 QVERIFY(plugin.mimetypes().contains(mimeType)); 0041 0042 SimpleExtractionResult result(path, mimeType, ExtractionResult::ExtractNothing); 0043 plugin.extract(&result); 0044 0045 QCOMPARE(result.types().size(), 1); 0046 QCOMPARE(result.types().constFirst(), Type::Document); 0047 QCOMPARE(result.properties().size(), 0); 0048 } 0049 0050 void Fb2ExtractorTest::test_data() 0051 { 0052 QTest::addColumn<QString>("fileName"); 0053 0054 QTest::addRow("uncompressed") << QStringLiteral("test.fb2"); 0055 QTest::addRow("compressed") << QStringLiteral("test.fb2.zip"); 0056 } 0057 0058 void Fb2ExtractorTest::test() 0059 { 0060 QFETCH(QString, fileName); 0061 0062 Fb2Extractor plugin{this}; 0063 0064 const QString path = testFilePath(fileName); 0065 QMimeDatabase mimeDb; 0066 QString mimeType = MimeUtils::strictMimeType(path, mimeDb).name(); 0067 QVERIFY(plugin.mimetypes().contains(mimeType)); 0068 0069 SimpleExtractionResult result(path, mimeType); 0070 plugin.extract(&result); 0071 0072 QCOMPARE(result.types().size(), 1); 0073 QCOMPARE(result.types().constFirst(), Type::Document); 0074 0075 QCOMPARE(result.text(), QStringLiteral("This is a sample PDF file for KFileMetaData. ")); 0076 QCOMPARE(result.properties().value(Property::Author), QVariant(QStringLiteral("Happy Man"))); 0077 QCOMPARE(result.properties().value(Property::Publisher), QVariant(QStringLiteral("Happy Publisher"))); 0078 QCOMPARE(result.properties().value(Property::Title), QVariant(QStringLiteral("The Big Brown Bear"))); 0079 QCOMPARE(result.properties().value(Property::Description), QVariant(QStringLiteral("Honey"))); 0080 QCOMPARE(result.properties().value(Property::Language), QVariant(QStringLiteral("en"))); 0081 QCOMPARE(result.properties().value(Property::Genre), QVariant(QStringLiteral("antique"))); 0082 QCOMPARE(result.properties().value(Property::Generator), QVariant(QStringLiteral("calibre 4.99.4"))); 0083 0084 QDateTime dt(QDate(2014, 1, 1), QTime(0, 0, 0)); 0085 dt.setTimeSpec(Qt::UTC); 0086 QCOMPARE(result.properties().value(Property::CreationDate), QVariant(dt)); 0087 QCOMPARE(result.properties().value(Property::ReleaseYear), QVariant(2014)); 0088 0089 QCOMPARE(result.properties().size(), 9); 0090 } 0091 0092 void Fb2ExtractorTest::testMetaDataOnly_data() 0093 { 0094 QTest::addColumn<QString>("fileName"); 0095 QTest::addColumn<QString>("mimeType"); 0096 0097 QTest::addRow("uncompressed") << QStringLiteral("test.fb2") << QStringLiteral("application/x-fictionbook+xml"); 0098 QTest::addRow("compressed") << QStringLiteral("test.fb2.zip") << QStringLiteral("application/x-zip-compressed-fb2"); 0099 } 0100 0101 void Fb2ExtractorTest::testMetaDataOnly() 0102 { 0103 QFETCH(QString, fileName); 0104 QFETCH(QString, mimeType); 0105 0106 Fb2Extractor plugin{this}; 0107 0108 SimpleExtractionResult result(testFilePath(fileName), mimeType, ExtractionResult::ExtractMetaData); 0109 plugin.extract(&result); 0110 0111 QVERIFY(!result.types().isEmpty()); 0112 QVERIFY(!result.properties().isEmpty()); 0113 QVERIFY(result.text().isEmpty()); 0114 } 0115 0116 QTEST_GUILESS_MAIN(Fb2ExtractorTest) 0117 0118 #include "moc_fb2extractortest.cpp"