Don't rely on PlatformQuirks in qimagereader test

The PlatformQuirks header is, by its author's own admission, based on
"very bad assumptions", those being that only Meego has quirks.

The assumption that only Meego has versions of libjpeg and libpng with
rounding errors is not a good assumption.  Change the test to be a
little tolerant of rounding error regardless of the platform, at least
until there's a reliable way to tell which libjpeg/libpng versions have
rounding errors.

Change-Id: Id2be5cc54739249b615bf3307ee1850c0a5c06b3
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
This commit is contained in:
Jason McDonald 2011-11-04 15:16:35 +10:00 committed by Qt by Nokia
parent c30ebdeac0
commit 9dc4907074

View File

@ -55,8 +55,6 @@
#include <QTcpServer>
#include <QTimer>
#include "../../../platformquirks.h"
typedef QMap<QString, QString> QStringMap;
typedef QList<int> QIntList;
Q_DECLARE_METATYPE(QImage)
@ -320,14 +318,15 @@ void tst_QImageReader::jpegRgbCmyk()
QImage image1(prefix + QLatin1String("YCbCr_cmyk.jpg"));
QImage image2(prefix + QLatin1String("YCbCr_cmyk.png"));
if (PlatformQuirks::isImageLoaderImprecise()) {
if (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
// compare all the pixels with a slack of 3. This ignores rounding errors
// in libjpeg/libpng, where some versions sacrifice accuracy for speed.
for (int h = 0; h < image1.height(); ++h) {
const uchar *s1 = image1.constScanLine(h);
const uchar *s2 = image2.constScanLine(h);
@ -339,8 +338,6 @@ void tst_QImageReader::jpegRgbCmyk()
s2++;
}
}
} else {
QCOMPARE(image1, image2);
}
}