File indexing completed on 2024-06-16 05:11:10

0001 /*
0002     SPDX-FileCopyrightText: 2022 Fushan Wen <qydwhotmail@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include <QDir>
0008 #include <QSignalSpy>
0009 #include <QTest>
0010 #include <QThreadPool>
0011 
0012 #include "../finder/mediametadatafinder.h"
0013 #include "commontestdata.h"
0014 #include "config-KExiv2.h"
0015 
0016 class MediaMetadataFinderTest : public QObject
0017 {
0018     Q_OBJECT
0019 
0020 private Q_SLOTS:
0021     void initTestCase();
0022     void testMediaMetadataFinderCanFindMetadata();
0023 
0024 private:
0025     QDir m_dataDir;
0026 };
0027 
0028 void MediaMetadataFinderTest::initTestCase()
0029 {
0030     qRegisterMetaType<MediaMetadata>();
0031 
0032     m_dataDir = QDir(QFINDTESTDATA("testdata/default"));
0033     QVERIFY(!m_dataDir.isEmpty());
0034 }
0035 
0036 void MediaMetadataFinderTest::testMediaMetadataFinderCanFindMetadata()
0037 {
0038     MediaMetadataFinder *finder = new MediaMetadataFinder(m_dataDir.absoluteFilePath(ImageBackendTestData::defaultImageFileName1));
0039     QSignalSpy spy(finder, &MediaMetadataFinder::metadataFound);
0040     QThreadPool::globalInstance()->start(finder);
0041 
0042     spy.wait(10 * 1000);
0043     QCOMPARE(spy.count(), 1);
0044 
0045     const auto args = spy.takeFirst();
0046     QCOMPARE(args.at(0).toString(), m_dataDir.absoluteFilePath(ImageBackendTestData::defaultImageFileName1));
0047 
0048     const auto metadata = args.at(1).value<MediaMetadata>();
0049 #if HAVE_KExiv2
0050     QTRY_COMPARE(metadata.title, QStringLiteral("DocumentName"));
0051     QTRY_COMPARE(metadata.author, QStringLiteral("KDE Community"));
0052 #endif
0053     QTRY_COMPARE(metadata.resolution, QSize(15, 16));
0054 }
0055 
0056 QTEST_MAIN(MediaMetadataFinderTest)
0057 
0058 #include "test_mediametadatafinder.moc"