summaryrefslogtreecommitdiff
path: root/tests/auto/heif/tst_qheif.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/heif/tst_qheif.cpp')
-rw-r--r--tests/auto/heif/tst_qheif.cpp80
1 files changed, 79 insertions, 1 deletions
diff --git a/tests/auto/heif/tst_qheif.cpp b/tests/auto/heif/tst_qheif.cpp
index faf22fa..26ddf73 100644
--- a/tests/auto/heif/tst_qheif.cpp
+++ b/tests/auto/heif/tst_qheif.cpp
@@ -37,6 +37,9 @@ private slots:
void initTestCase();
void readImage_data();
void readImage();
+ void readProperties_data();
+ void readProperties();
+ void writeImage();
};
void tst_qheif::initTestCase()
@@ -49,8 +52,10 @@ void tst_qheif::readImage_data()
{
QTest::addColumn<QString>("fileName");
QTest::addColumn<QSize>("size");
+ QTest::addColumn<int>("transform");
- QTest::newRow("col") << QString("col320x480.heic") << QSize(320, 480);
+ QTest::newRow("col") << QString("col320x480.heic") << QSize(320, 480) << int(QImageIOHandler::TransformationNone);
+ QTest::newRow("rot") << QString("newlogoCCW.heic") << QSize(110, 78) << int(QImageIOHandler::TransformationRotate90);
}
void tst_qheif::readImage()
@@ -66,5 +71,78 @@ void tst_qheif::readImage()
QCOMPARE(image.size(), size);
}
+void tst_qheif::readProperties_data()
+{
+ readImage_data();
+}
+
+void tst_qheif::readProperties()
+{
+ QFETCH(QString, fileName);
+ QFETCH(QSize, size);
+ QFETCH(int, transform);
+
+ QSize rawSize = (transform & QImageIOHandler::TransformationRotate90) ? size.transposed() : size;
+
+ QString path = QStringLiteral(":/heif/") + fileName;
+ QImageReader reader(path);
+ QCOMPARE(reader.size(), rawSize);
+ QCOMPARE(int(reader.transformation()), transform);
+
+ QImage image = reader.read();
+ QCOMPARE(image.size(), size);
+
+ QCOMPARE(reader.size(), rawSize);
+ QCOMPARE(int(reader.transformation()), transform);
+}
+
+void tst_qheif::writeImage()
+{
+ QImage img(20, 10, QImage::Format_ARGB32_Premultiplied);
+ img.fill(Qt::green);
+
+ QBuffer buf1, buf2;
+ QImage rimg1;
+
+ {
+ buf1.open(QIODevice::WriteOnly);
+ QImageWriter writer(&buf1, "heic");
+ QVERIFY(writer.write(img));
+ buf1.close();
+ QVERIFY(buf1.size() > 0);
+
+ buf1.open(QIODevice::ReadOnly);
+ QImageReader reader(&buf1);
+ QVERIFY(reader.read(&rimg1));
+ buf1.close();
+ QVERIFY(rimg1.size() == img.size());
+ }
+
+ {
+ buf2.open(QIODevice::WriteOnly);
+ QImageWriter writer(&buf2, "heic");
+ writer.setQuality(20);
+ QVERIFY(writer.write(img));
+ buf2.close();
+ QVERIFY(buf2.size() > 0);
+ QVERIFY(buf2.size() < buf1.size());
+ }
+
+ {
+ buf2.open(QIODevice::WriteOnly);
+ QImageWriter writer(&buf2, "heic");
+ writer.setTransformation(QImageIOHandler::TransformationRotate270);
+ QVERIFY(writer.write(img));
+ buf2.close();
+
+ QImage rimg2;
+ buf2.open(QIODevice::ReadOnly);
+ QImageReader reader(&buf2);
+ QVERIFY(reader.read(&rimg2));
+ buf2.close();
+ QVERIFY(rimg2.size() == img.size().transposed());
+ }
+}
+
QTEST_MAIN(tst_qheif)
#include "tst_qheif.moc"