tests/auto/qimagereader/tst_qimagereader.cpp
changeset 33 3e2da88830cd
parent 30 5dc02b23752f
--- a/tests/auto/qimagereader/tst_qimagereader.cpp	Tue Jul 06 15:10:48 2010 +0300
+++ b/tests/auto/qimagereader/tst_qimagereader.cpp	Wed Aug 18 10:37:55 2010 +0300
@@ -123,9 +123,6 @@
     void supportsAnimation_data();
     void supportsAnimation();
 
-    void description_data();
-    void description();
-
     void readFromResources_data();
     void readFromResources();
 
@@ -138,6 +135,9 @@
     void sizeBeforeRead_data();
     void sizeBeforeRead();
 
+    void sizeBeforeFormat_data();
+    void sizeBeforeFormat();
+
     void imageFormatBeforeRead_data();
     void imageFormatBeforeRead();
 
@@ -312,7 +312,24 @@
     QImage image1(prefix + QLatin1String("YCbCr_cmyk.jpg"));
     QImage image2(prefix + QLatin1String("YCbCr_cmyk.png"));
 
-    QCOMPARE(image1, image2);
+    // first, do some obvious tests
+    QCOMPARE(image1.height(), image2.height());
+    QCOMPARE(image1.width(), image2.width());
+    QCOMPARE(image1.format(), image2.format());
+    QCOMPARE(image1.format(), QImage::Format_RGB32);
+
+    // compare all the pixels with a slack of 3. This ignores rounding errors in libjpeg/libpng
+    for (int h = 0; h < image1.height(); ++h) {
+        const uchar *s1 = image1.constScanLine(h);
+        const uchar *s2 = image2.constScanLine(h);
+        for (int w = 0; w < image1.width() * 4; ++w) {
+            if (*s1 != *s2) {
+                QVERIFY2(qAbs(*s1 - *s2) <= 3, qPrintable(QString("images differ in line %1, col %2 (image1: %3, image2: %4)").arg(h).arg(w).arg(*s1, 0, 16).arg(*s2, 0, 16)));
+            }
+            s1++;
+            s2++;
+        }
+    }
 }
 
 void tst_QImageReader::setScaledSize_data()
@@ -706,6 +723,31 @@
     QCOMPARE(size, image.size());
 }
 
+void tst_QImageReader::sizeBeforeFormat_data()
+{
+    imageFormat_data();
+}
+
+void tst_QImageReader::sizeBeforeFormat()
+{
+    QFETCH(QString, fileName);
+
+    QByteArray formatA, formatB;
+
+    {
+        QImageReader reader(prefix + fileName);
+        formatA = reader.format();
+    }
+
+    {
+        QImageReader reader(prefix + fileName);
+        QSize size = reader.size();
+        formatB = reader.format();
+    }
+
+    QCOMPARE(formatA, formatB);
+}
+
 void tst_QImageReader::imageFormatBeforeRead_data()
 {
     imageFormat_data();
@@ -1208,53 +1250,6 @@
 }
 
 
-void tst_QImageReader::description_data()
-{
-    QTest::addColumn<QString>("fileName");
-    QTest::addColumn<QStringMap>("description");
-
-    QMap<QString, QString> willem;
-    willem["Title"] = "PngSuite";
-    willem["Author"] = "Willem A.J. van Schaik (gwillem@ntuvax.ntu.ac.sg)";
-    willem["Copyright"] = "Copyright Willem van Schaik, Singapore 1995";
-    willem["Description"] = "A compilation of a set of images created to test the "
-                            "various color-types of the PNG format. Included are "
-                            "black&white, color, paletted, with alpha channel, with "
-                            "transparency formats. All bit-depths allowed according "
-                            "to the spec are present.";
-    willem["Software"] = "Created on a NeXTstation color using \"pnmtopng\".";
-    willem["Disclaimer"] = "Freeware.";
-
-    QTest::newRow("PNG") << QString("pngwithtext.png") << willem;
-    QTest::newRow("PNG Compressed") << QString("pngwithcompressedtext.png") << willem;
-}
-
-void tst_QImageReader::description()
-{
-    QFETCH(QString, fileName);
-    QFETCH(QStringMap, description);
-
-    // Sanity check
-    QVERIFY(!QImage(prefix + fileName).isNull());
-
-    QImageReader reader(prefix + fileName);
-
-    foreach (QString key, description.keys())
-        QCOMPARE(reader.text(key), description.value(key));
-    QCOMPARE(reader.textKeys(), QStringList(description.keys()));
-
-    QImage image = reader.read();
-    QVERIFY(!image.isNull());
-
-    foreach (QString key, description.keys())
-        QCOMPARE(image.text(key), description.value(key));
-    QCOMPARE(image.textKeys(), QStringList(description.keys()));
-
-    foreach (QString key, description.keys())
-        QCOMPARE(reader.text(key), description.value(key));
-    QCOMPARE(reader.textKeys(), QStringList(description.keys()));
-}
-
 void tst_QImageReader::readFromResources_data()
 {
     QTest::addColumn<QString>("fileName");
@@ -1360,12 +1355,6 @@
     QTest::newRow("image.png") << QString("image.png")
                                       << QByteArray("png") << QSize(22, 22)
                                       << QString("");
-    QTest::newRow("pngwithcompressedtext.png") << QString("pngwithcompressedtext.png")
-                                                      << QByteArray("png") << QSize(32, 32)
-                                                      << QString("");
-    QTest::newRow("pngwithtext.png") << QString("pngwithtext.png")
-                                            << QByteArray("png") << QSize(32, 32)
-                                            << QString("");
     QTest::newRow("kollada.png") << QString("kollada.png")
                                         << QByteArray("png") << QSize(436, 160)
                                         << QString("");
@@ -1884,14 +1873,14 @@
     QFETCH(QString, expected);
 
     QList<QByteArray> formats = QImageReader::supportedImageFormats();
-    QString fileNameBase = "images/" + name + ".";
+    QString fileNameBase = prefix + name + ".";
 
     foreach (const QByteArray &f, formats) {
         if (f == extension)
             continue;
         QFile tmp(QDir::tempPath() + "/" + name + "_" + expected + "." + f);
 
-        QFile::copy(fileNameBase + extension, QFileInfo(tmp).absoluteFilePath());
+        QVERIFY(QFile::copy(fileNameBase + extension, QFileInfo(tmp).absoluteFilePath()));
 
         QString format;
         QImage image;