summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/styles/qstyle/tst_qstyle.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2017-07-18 16:47:16 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2017-07-19 07:33:38 +0000
commita9dfdbd06acc6a11a03f298a794e290da1028992 (patch)
tree67a14d8a8571580239c8502c2bbe3d72869c724e /tests/auto/widgets/styles/qstyle/tst_qstyle.cpp
parentea4fae0df689843fbcd6cf7f170d825557646ea2 (diff)
tst_QStyle::drawItemPixmap(): Check on the image color
Verify that all pixels of the grabbed image are green instead of comparing an image loaded from file. The test then also passes when High DPI scaling is active in which case a twice as big pixmap with DPR=2 is obtained when grabbing the widget. Change-Id: Ie5244a39a68ea0defd2590cf30f251d660d0869b Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'tests/auto/widgets/styles/qstyle/tst_qstyle.cpp')
-rw-r--r--tests/auto/widgets/styles/qstyle/tst_qstyle.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/tests/auto/widgets/styles/qstyle/tst_qstyle.cpp b/tests/auto/widgets/styles/qstyle/tst_qstyle.cpp
index 5925b764dd..fcb05f6b74 100644
--- a/tests/auto/widgets/styles/qstyle/tst_qstyle.cpp
+++ b/tests/auto/widgets/styles/qstyle/tst_qstyle.cpp
@@ -58,6 +58,8 @@
#include <qscrollarea.h>
#include <qwidget.h>
+#include <algorithm>
+
// Make a widget frameless to prevent size constraints of title bars
// from interfering (Windows).
static inline void setFrameless(QWidget *w)
@@ -208,13 +210,12 @@ void tst_QStyle::drawItemPixmap()
testWidget->resize(300, 300);
testWidget->showNormal();
- const QString imageFileName = QFINDTESTDATA("task_25863.png");
- QVERIFY(!imageFileName.isEmpty());
-
- QPixmap p(imageFileName, "PNG");
- const QPixmap actualPix = testWidget->grab();
-
- QCOMPARE(actualPix, p);
+ QImage image = testWidget->grab().toImage();
+ const QRgb green = QColor(Qt::green).rgb();
+ QVERIFY(image.reinterpretAsFormat(QImage::Format_RGB32));
+ const QRgb *bits = reinterpret_cast<const QRgb *>(image.constBits());
+ const QRgb *end = bits + image.byteCount() / sizeof(QRgb);
+ QVERIFY(std::all_of(bits, end, [green] (QRgb r) { return r == green; }));
testWidget->hide();
}