Stabilize image and borderimage multiFrame tests
There are various problems on QEMU: color depth may not be 32-bit, and for some reason grabWindow isn't always working. Task-number: QTBUG-77817 Change-Id: I10db56e93643722d1d6a85e66b9dd552ee654432 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
This commit is contained in:
parent
5d995ae122
commit
826177ecca
|
@ -46,6 +46,8 @@
|
|||
#include "../../shared/util.h"
|
||||
#include "../shared/visualtestutil.h"
|
||||
|
||||
Q_LOGGING_CATEGORY(lcTests, "qt.quick.tests")
|
||||
|
||||
Q_DECLARE_METATYPE(QQuickImageBase::Status)
|
||||
|
||||
class tst_qquickborderimage : public QQmlDataTest
|
||||
|
@ -615,6 +617,10 @@ void tst_qquickborderimage::multiFrame_data()
|
|||
|
||||
void tst_qquickborderimage::multiFrame()
|
||||
{
|
||||
if ((QGuiApplication::platformName() == QLatin1String("offscreen"))
|
||||
|| (QGuiApplication::platformName() == QLatin1String("minimal")))
|
||||
QSKIP("Skipping due to grabWindow not functional on offscreen/minimimal platforms");
|
||||
|
||||
QFETCH(QString, qmlfile);
|
||||
QFETCH(bool, asynchronous);
|
||||
Q_UNUSED(asynchronous)
|
||||
|
@ -634,24 +640,30 @@ void tst_qquickborderimage::multiFrame()
|
|||
QCOMPARE(image->currentFrame(), 0);
|
||||
view.show();
|
||||
QVERIFY(QTest::qWaitForWindowExposed(&view));
|
||||
QCoreApplication::processEvents(); // Process all queued events
|
||||
|
||||
QImage contents = view.grabWindow();
|
||||
// The first frame looks blue, approximately qRgba(0x43, 0x7e, 0xd6, 0xff)
|
||||
QRgb color = contents.pixel(60, 60);
|
||||
QVERIFY(qRed(color) < 0xc0);
|
||||
QVERIFY(qGreen(color) < 0xc0);
|
||||
QVERIFY(qBlue(color) > 0xc0);
|
||||
if (contents.width() < 160)
|
||||
QSKIP("Skipping due to grabWindow not functional");
|
||||
|
||||
// The middle of the first frame looks blue, approximately qRgba(0x43, 0x7e, 0xd6, 0xff)
|
||||
QColor color = contents.pixelColor(60, 60);
|
||||
qCDebug(lcTests) << "expected bluish color, got" << color;
|
||||
QVERIFY(color.redF() < 0.75);
|
||||
QVERIFY(color.greenF() < 0.75);
|
||||
QVERIFY(color.blueF() > 0.75);
|
||||
|
||||
image->setCurrentFrame(1);
|
||||
QTRY_COMPARE(image->status(), QQuickImageBase::Ready);
|
||||
QCOMPARE(currentSpy.count(), 1);
|
||||
QCOMPARE(image->currentFrame(), 1);
|
||||
contents = view.grabWindow();
|
||||
// The second frame looks green, approximately qRgba(0x3a, 0xd2, 0x31, 0xff)
|
||||
color = contents.pixel(60, 60);
|
||||
QVERIFY(qRed(color) < 0xc0);
|
||||
QVERIFY(qGreen(color) > 0xc0);
|
||||
QVERIFY(qBlue(color) < 0xc0);
|
||||
// The middle of the second frame looks green, approximately qRgba(0x3a, 0xd2, 0x31, 0xff)
|
||||
color = contents.pixelColor(60, 60);
|
||||
qCDebug(lcTests) << "expected greenish color, got" << color;
|
||||
QVERIFY(color.redF() < 0.75);
|
||||
QVERIFY(color.green() > 0.75);
|
||||
QVERIFY(color.blueF() < 0.75);
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_qquickborderimage)
|
||||
|
|
|
@ -1145,6 +1145,10 @@ void tst_qquickimage::multiFrame_data()
|
|||
|
||||
void tst_qquickimage::multiFrame()
|
||||
{
|
||||
if ((QGuiApplication::platformName() == QLatin1String("offscreen"))
|
||||
|| (QGuiApplication::platformName() == QLatin1String("minimal")))
|
||||
QSKIP("Skipping due to grabWindow not functional on offscreen/minimimal platforms");
|
||||
|
||||
QFETCH(QString, qmlfile);
|
||||
QFETCH(bool, asynchronous);
|
||||
Q_UNUSED(asynchronous)
|
||||
|
@ -1166,6 +1170,8 @@ void tst_qquickimage::multiFrame()
|
|||
QVERIFY(QTest::qWaitForWindowExposed(&view));
|
||||
|
||||
QImage contents = view.grabWindow();
|
||||
if (contents.width() < 40)
|
||||
QSKIP("Skipping due to grabWindow not functional");
|
||||
// The first frame is a blue ball, approximately qRgba(0x33, 0x6d, 0xcc, 0xff)
|
||||
QRgb color = contents.pixel(16, 16);
|
||||
QVERIFY(qRed(color) < 0xc0);
|
||||
|
|
Loading…
Reference in New Issue