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"