1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
/*
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
SPDX-FileCopyrightText: 2022 Nicolas Fella <nicolas.fella@gmx.de>
*/
#include <QSignalSpy>
#include <QStandardPaths>
#include <QTest>
#include <KIO/PreviewJob>
class ThumbnailTest : public QObject
{
Q_OBJECT
private Q_SLOTS:
void testThumbnail_data()
{
QTest::addColumn<QString>("inputFile");
QTest::addColumn<QString>("expectedThumbnail");
QTest::addColumn<qreal>("dpr");
QTest::addRow("png") << "cherry_tree.png"
<< "cherry_tree_thumb.png" << 1.0;
QTest::addRow("png_dpr2") << "cherry_tree.png"
<< "cherry_tree_thumb@2.png" << 2.0;
QTest::addRow("jpg") << "boxes.jpg"
<< "boxes_thumb.png" << 1.0;
QTest::addRow("jpg_dpr2") << "boxes.jpg"
<< "boxes_thumb@2.png" << 2.0;
QTest::addRow("jpg_embedded_thumbnail") << "castle.jpg"
<< "castle_thumb.png" << 1.0;
}
void testThumbnail()
{
QFETCH(QString, inputFile);
QFETCH(QString, expectedThumbnail);
QFETCH(qreal, dpr);
QStandardPaths::setTestModeEnabled(true);
qputenv("KIOSLAVE_ENABLE_TESTMODE", "1"); // ensure the worker call QStandardPaths::setTestModeEnabled too
// wipe thumbnail cache so we always start clean
QDir cacheDir(QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation));
cacheDir.removeRecursively();
QString path = QFINDTESTDATA("data/" + inputFile);
KFileItemList items;
items.append(KFileItem(QUrl::fromLocalFile(path)));
QStringList enabledPlugins{"imagethumbnail", "jpegthumbnail"};
auto *job = KIO::filePreview(items, QSize(128, 128), &enabledPlugins);
job->setDevicePixelRatio(dpr);
connect(job, &KIO::PreviewJob::gotPreview, this, [path, expectedThumbnail, dpr](const KFileItem &item, const QPixmap &preview) {
QCOMPARE(item.url(), QUrl::fromLocalFile(path));
QImage expectedImage;
expectedImage.load(QFINDTESTDATA("data/" + expectedThumbnail));
expectedImage.setDevicePixelRatio(dpr);
QCOMPARE(preview.toImage(), expectedImage);
});
QSignalSpy failedSpy(job, &KIO::PreviewJob::failed);
QSignalSpy gotPreviewSpy(job, &KIO::PreviewJob::gotPreview);
QSignalSpy resultSpy(job, &KIO::PreviewJob::result);
gotPreviewSpy.wait();
resultSpy.wait();
QVERIFY(failedSpy.empty());
}
};
QTEST_MAIN(ThumbnailTest)
#include "thumbnailtest.moc"
|