File indexing completed on 2024-05-05 04:20:55

0001 // SPDX-FileCopyrightText: 2021 Carl Schwan <carl@carlschwan.eu>
0002 // SPDX-License-Identifier: LGPL-2.1-or-later
0003 
0004 #include <QDebug>
0005 #include <QSignalSpy>
0006 #include <QTest>
0007 
0008 #include <QImage>
0009 #include <QTemporaryFile>
0010 
0011 #include "fileinfo.h"
0012 
0013 class FileInfoTest : public QObject
0014 {
0015     Q_OBJECT
0016 
0017 private slots:
0018     void testSimple();
0019     void testCache();
0020 };
0021 
0022 void FileInfoTest::testSimple()
0023 {
0024     QImage empty({1, 1}, QImage::Format_RGB32);
0025     empty.fill(QColor(0, 0, 0));
0026     QTemporaryFile file(QStringLiteral("XXXXXX.png"));
0027     if (file.open()) {
0028         empty.save(file.fileName(), "PNG");
0029         FileInfo fileInfo;
0030         QCOMPARE(fileInfo.status(), FileInfo::Status::Initial);
0031         fileInfo.setSource(QUrl::fromLocalFile(file.fileName()));
0032         QCOMPARE(fileInfo.status(), FileInfo::Status::Reading);
0033 
0034         QSignalSpy spy(&fileInfo, &FileInfo::infoChanged);
0035         spy.wait();
0036 
0037         QCOMPARE(fileInfo.status(), FileInfo::Status::Ready);
0038         QCOMPARE(fileInfo.mimeType(), QStringLiteral("image/png"));
0039         QCOMPARE(fileInfo.width(), 1);
0040         QCOMPARE(fileInfo.height(), 1);
0041     }
0042 }
0043 
0044 void FileInfoTest::testCache()
0045 {
0046     QImage empty({1, 1}, QImage::Format_RGB32);
0047     empty.fill(QColor(0, 0, 0));
0048     QTemporaryFile file(QStringLiteral("XXXXXX.png"));
0049     QTemporaryFile file1(QStringLiteral("XXXXXX.png"));
0050     if (file.open() && file1.open()) {
0051         empty.save(file.fileName(), "PNG");
0052         empty.save(file1.fileName(), "PNG");
0053 
0054         FileInfo fileInfo;
0055         QCOMPARE(fileInfo.status(), FileInfo::Status::Initial);
0056         fileInfo.setSource(QUrl::fromLocalFile(file.fileName()));
0057         QCOMPARE(fileInfo.status(), FileInfo::Status::Reading);
0058 
0059         // request first image
0060         QSignalSpy spy(&fileInfo, &FileInfo::infoChanged);
0061         spy.wait();
0062         QCOMPARE(fileInfo.status(), FileInfo::Status::Ready);
0063 
0064         // request second image
0065         fileInfo.setSource(QUrl::fromLocalFile(file1.fileName()));
0066         QCOMPARE(fileInfo.status(), FileInfo::Status::Reading);
0067         spy.wait();
0068         QCOMPARE(fileInfo.status(), FileInfo::Status::Ready);
0069 
0070         // back original file
0071         fileInfo.setSource(QUrl::fromLocalFile(file.fileName()));
0072         // still ready because cached
0073         QCOMPARE(fileInfo.status(), FileInfo::Status::Ready);
0074     }
0075 }
0076 
0077 QTEST_MAIN(FileInfoTest)
0078 
0079 #include "fileinfotest.moc"