diff options
Diffstat (limited to 'tests/auto/quick/qquickpixmapcache/tst_qquickpixmapcache.cpp')
-rw-r--r-- | tests/auto/quick/qquickpixmapcache/tst_qquickpixmapcache.cpp | 57 |
1 files changed, 56 insertions, 1 deletions
diff --git a/tests/auto/quick/qquickpixmapcache/tst_qquickpixmapcache.cpp b/tests/auto/quick/qquickpixmapcache/tst_qquickpixmapcache.cpp index fb2405c27a..c238ed863f 100644 --- a/tests/auto/quick/qquickpixmapcache/tst_qquickpixmapcache.cpp +++ b/tests/auto/quick/qquickpixmapcache/tst_qquickpixmapcache.cpp @@ -74,6 +74,7 @@ private slots: void networkCrash(); #endif void lockingCrash(); + void uncached(); #if PIXMAP_DATA_LEAK_TEST void dataLeak(); #endif @@ -352,11 +353,15 @@ public: virtual QPixmap requestPixmap(const QString &d, QSize *, const QSize &) { Q_UNUSED(d) QPixmap pix(800, 600); - pix.fill(Qt::red); + pix.fill(fillColor); return pix; } + + static QRgb fillColor; }; +QRgb MyPixmapProvider::fillColor = qRgb(255, 0, 0); + // QTBUG-13345 void tst_qquickpixmapcache::shrinkcache() { @@ -417,6 +422,56 @@ void tst_qquickpixmapcache::lockingCrash() } } +void tst_qquickpixmapcache::uncached() +{ + QQmlEngine engine; + engine.addImageProvider(QLatin1String("mypixmaps"), new MyPixmapProvider); + + QUrl url("image://mypixmaps/mypix"); + { + QQuickPixmap p; + p.load(&engine, url, 0); + QImage img = p.image(); + QCOMPARE(img.pixel(0,0), qRgb(255, 0, 0)); + } + + // uncached, so we will get a different colored image + MyPixmapProvider::fillColor = qRgb(0, 255, 0); + { + QQuickPixmap p; + p.load(&engine, url, 0); + QImage img = p.image(); + QCOMPARE(img.pixel(0,0), qRgb(0, 255, 0)); + } + + // Load the image with cache enabled + MyPixmapProvider::fillColor = qRgb(0, 0, 255); + { + QQuickPixmap p; + p.load(&engine, url, QQuickPixmap::Cache); + QImage img = p.image(); + QCOMPARE(img.pixel(0,0), qRgb(0, 0, 255)); + } + + // We should not get the cached version if we request uncached + MyPixmapProvider::fillColor = qRgb(255, 0, 255); + { + QQuickPixmap p; + p.load(&engine, url, 0); + QImage img = p.image(); + QCOMPARE(img.pixel(0,0), qRgb(255, 0, 255)); + } + + // If we again load the image with cache enabled, we should get the previously cached version + MyPixmapProvider::fillColor = qRgb(0, 255, 255); + { + QQuickPixmap p; + p.load(&engine, url, QQuickPixmap::Cache); + QImage img = p.image(); + QCOMPARE(img.pixel(0,0), qRgb(0, 0, 255)); + } +} + #if PIXMAP_DATA_LEAK_TEST // This test should not be enabled by default as it |