summaryrefslogtreecommitdiffstats
path: root/tests/auto/gui/image
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/gui/image')
-rw-r--r--tests/auto/gui/image/qicoimageformat/qicoimageformat.pro1
-rw-r--r--tests/auto/gui/image/qicon/icons/themeparent/icon-theme.cachebin0 -> 280 bytes
-rw-r--r--tests/auto/gui/image/qicon/qicon.pro1
-rw-r--r--tests/auto/gui/image/qicon/tst_qicon.cpp64
-rw-r--r--tests/auto/gui/image/qicon/tst_qicon.qrc1
-rw-r--r--tests/auto/gui/image/qimage/qimage.pro1
-rw-r--r--tests/auto/gui/image/qimageiohandler/qimageiohandler.pro1
-rw-r--r--tests/auto/gui/image/qmovie/qmovie.pro1
-rw-r--r--tests/auto/gui/image/qpicture/qpicture.pro1
-rw-r--r--tests/auto/gui/image/qpixmapcache/qpixmapcache.pro1
-rw-r--r--tests/auto/gui/image/qpixmapcache/tst_qpixmapcache.cpp12
11 files changed, 71 insertions, 13 deletions
diff --git a/tests/auto/gui/image/qicoimageformat/qicoimageformat.pro b/tests/auto/gui/image/qicoimageformat/qicoimageformat.pro
index 7ed69ce1d1..485472c70c 100644
--- a/tests/auto/gui/image/qicoimageformat/qicoimageformat.pro
+++ b/tests/auto/gui/image/qicoimageformat/qicoimageformat.pro
@@ -1,5 +1,4 @@
CONFIG += testcase
-CONFIG += parallel_test
TARGET = tst_qicoimageformat
SOURCES+= tst_qicoimageformat.cpp
QT += testlib
diff --git a/tests/auto/gui/image/qicon/icons/themeparent/icon-theme.cache b/tests/auto/gui/image/qicon/icons/themeparent/icon-theme.cache
new file mode 100644
index 0000000000..a323875989
--- /dev/null
+++ b/tests/auto/gui/image/qicon/icons/themeparent/icon-theme.cache
Binary files differ
diff --git a/tests/auto/gui/image/qicon/qicon.pro b/tests/auto/gui/image/qicon/qicon.pro
index 6ff20ec8fa..f5570c2497 100644
--- a/tests/auto/gui/image/qicon/qicon.pro
+++ b/tests/auto/gui/image/qicon/qicon.pro
@@ -1,5 +1,4 @@
CONFIG += testcase
-CONFIG += parallel_test
TARGET = tst_qicon
QT += testlib
diff --git a/tests/auto/gui/image/qicon/tst_qicon.cpp b/tests/auto/gui/image/qicon/tst_qicon.cpp
index 9ed3873682..afa72f6922 100644
--- a/tests/auto/gui/image/qicon/tst_qicon.cpp
+++ b/tests/auto/gui/image/qicon/tst_qicon.cpp
@@ -63,6 +63,7 @@ private slots:
void streamAvailableSizes_data();
void streamAvailableSizes();
void fromTheme();
+ void fromThemeCache();
#ifndef QT_NO_WIDGETS
void task184901_badCache();
@@ -633,6 +634,69 @@ void tst_QIcon::fromTheme()
QVERIFY(abIcon.isNull());
}
+void tst_QIcon::fromThemeCache()
+{
+ QTemporaryDir dir;
+ QVERIFY(QDir().mkpath(dir.path() + QLatin1String("/testcache/16x16/actions")));
+ QVERIFY(QFile(QStringLiteral(":/styles/commonstyle/images/standardbutton-open-16.png"))
+ .copy( dir.path() + QLatin1String("/testcache/16x16/actions/button-open.png")));
+
+ {
+ QFile index(dir.path() + QLatin1String("/testcache/index.theme"));
+ QVERIFY(index.open(QFile::WriteOnly));
+ index.write("[Icon Theme]\nDirectories=16x16/actions\n[16x16/actions]\nSize=16\nContext=Actions\nType=Fixed\n");
+ }
+ QIcon::setThemeSearchPaths(QStringList() << dir.path());
+ QIcon::setThemeName("testcache");
+
+ // We just created a theme with that icon, it must exist
+ QVERIFY(!QIcon::fromTheme("button-open").isNull());
+
+ QString cacheName = dir.path() + QLatin1String("/testcache/icon-theme.cache");
+
+ // An invalid cache should not prevent lookup
+ {
+ QFile cacheFile(cacheName);
+ QVERIFY(cacheFile.open(QFile::WriteOnly));
+ QDataStream(&cacheFile) << quint16(1) << quint16(0) << "invalid corrupted stuff in there\n";
+ }
+ QIcon::setThemeSearchPaths(QStringList() << dir.path()); // reload themes
+ QVERIFY(!QIcon::fromTheme("button-open").isNull());
+
+ // An empty cache should prevent the lookup
+ {
+ QFile cacheFile(cacheName);
+ QVERIFY(cacheFile.open(QFile::WriteOnly));
+ QDataStream ds(&cacheFile);
+ ds << quint16(1) << quint16(0); // 0: version
+ ds << quint32(12) << quint32(20); // 4: hash offset / dir list offset
+ ds << quint32(1) << quint32(0xffffffff); // 12: one empty bucket
+ ds << quint32(1) << quint32(28); // 20: list with one element
+ ds.writeRawData("16x16/actions", sizeof("16x16/actions")); // 28
+ }
+ QIcon::setThemeSearchPaths(QStringList() << dir.path()); // reload themes
+ QVERIFY(QIcon::fromTheme("button-open").isNull()); // The icon was not in the cache, it should not be found
+
+ // Adding an icon should be changing the modification date of one sub directory which should make the cache ignored
+ QTest::qWait(1000); // wait enough to have a different modification time in seconds
+ QVERIFY(QFile(QStringLiteral(":/styles/commonstyle/images/standardbutton-save-16.png"))
+ .copy(dir.path() + QLatin1String("/testcache/16x16/actions/button-save.png")));
+ QVERIFY(QFileInfo(cacheName).lastModified() < QFileInfo(dir.path() + QLatin1String("/testcache/16x16/actions")).lastModified());
+ QIcon::setThemeSearchPaths(QStringList() << dir.path()); // reload themes
+ QVERIFY(!QIcon::fromTheme("button-open").isNull());
+
+ // Try to run the actual gtk-update-icon-cache and make sure that icons are still found
+ QProcess process;
+ process.start(QStringLiteral("gtk-update-icon-cache"),
+ QStringList() << QStringLiteral("-f") << QStringLiteral("-t") << (dir.path() + QLatin1String("/testcache")));
+ if (!process.waitForFinished())
+ QSKIP("gtk-update-icon-cache not run");
+ QVERIFY(QFileInfo(cacheName).lastModified() >= QFileInfo(dir.path() + QLatin1String("/testcache/16x16/actions")).lastModified());
+ QIcon::setThemeSearchPaths(QStringList() << dir.path()); // reload themes
+ QVERIFY(!QIcon::fromTheme("button-open").isNull());
+ QVERIFY(!QIcon::fromTheme("button-open-fallback").isNull());
+ QVERIFY(QIcon::fromTheme("notexist-fallback").isNull());
+}
void tst_QIcon::task223279_inconsistentAddFile()
{
diff --git a/tests/auto/gui/image/qicon/tst_qicon.qrc b/tests/auto/gui/image/qicon/tst_qicon.qrc
index 1505ca925b..3c8fbba7c2 100644
--- a/tests/auto/gui/image/qicon/tst_qicon.qrc
+++ b/tests/auto/gui/image/qicon/tst_qicon.qrc
@@ -15,6 +15,7 @@
<file>./icons/themeparent/32x32/actions/address-book-new.png</file>
<file>./icons/themeparent/32x32/actions/appointment-new.png</file>
<file>./icons/themeparent/index.theme</file>
+<file>./icons/themeparent/icon-theme.cache</file>
<file>./icons/themeparent/scalable/actions/address-book-new.svg</file>
<file>./icons/themeparent/scalable/actions/appointment-new.svg</file>
<file>./styles/commonstyle/images/standardbutton-open-16.png</file>
diff --git a/tests/auto/gui/image/qimage/qimage.pro b/tests/auto/gui/image/qimage/qimage.pro
index 42280d3bd4..d32e84c0d7 100644
--- a/tests/auto/gui/image/qimage/qimage.pro
+++ b/tests/auto/gui/image/qimage/qimage.pro
@@ -1,5 +1,4 @@
CONFIG += testcase
-CONFIG += parallel_test
TARGET = tst_qimage
SOURCES += tst_qimage.cpp
diff --git a/tests/auto/gui/image/qimageiohandler/qimageiohandler.pro b/tests/auto/gui/image/qimageiohandler/qimageiohandler.pro
index bbcf8d23c9..428ff62959 100644
--- a/tests/auto/gui/image/qimageiohandler/qimageiohandler.pro
+++ b/tests/auto/gui/image/qimageiohandler/qimageiohandler.pro
@@ -1,5 +1,4 @@
CONFIG += testcase
-CONFIG += parallel_test
TARGET = tst_qimageiohandler
QT += testlib
diff --git a/tests/auto/gui/image/qmovie/qmovie.pro b/tests/auto/gui/image/qmovie/qmovie.pro
index 4e7030b1f7..a04ad73b80 100644
--- a/tests/auto/gui/image/qmovie/qmovie.pro
+++ b/tests/auto/gui/image/qmovie/qmovie.pro
@@ -1,5 +1,4 @@
CONFIG += testcase
-CONFIG += parallel_test
TARGET = tst_qmovie
QT += testlib
qtHaveModule(widgets): QT += widgets
diff --git a/tests/auto/gui/image/qpicture/qpicture.pro b/tests/auto/gui/image/qpicture/qpicture.pro
index a24b8ec481..0fc851ce11 100644
--- a/tests/auto/gui/image/qpicture/qpicture.pro
+++ b/tests/auto/gui/image/qpicture/qpicture.pro
@@ -1,5 +1,4 @@
CONFIG += testcase
-CONFIG += parallel_test
TARGET = tst_qpicture
QT += testlib
qtHaveModule(widgets): QT += widgets
diff --git a/tests/auto/gui/image/qpixmapcache/qpixmapcache.pro b/tests/auto/gui/image/qpixmapcache/qpixmapcache.pro
index a81712ba23..fe3b5a2db3 100644
--- a/tests/auto/gui/image/qpixmapcache/qpixmapcache.pro
+++ b/tests/auto/gui/image/qpixmapcache/qpixmapcache.pro
@@ -1,5 +1,4 @@
CONFIG += testcase
-CONFIG += parallel_test
TARGET = tst_qpixmapcache
QT += gui-private testlib
SOURCES += tst_qpixmapcache.cpp
diff --git a/tests/auto/gui/image/qpixmapcache/tst_qpixmapcache.cpp b/tests/auto/gui/image/qpixmapcache/tst_qpixmapcache.cpp
index a3cf66da18..d1f76e8742 100644
--- a/tests/auto/gui/image/qpixmapcache/tst_qpixmapcache.cpp
+++ b/tests/auto/gui/image/qpixmapcache/tst_qpixmapcache.cpp
@@ -147,7 +147,7 @@ void tst_QPixmapCache::setCacheLimit()
QVERIFY(QPixmapCache::find(key, p1) == 0);
QPixmapCache::setCacheLimit(1000);
key = QPixmapCache::insert(*p1);
- QCOMPARE(getPrivate(key)->isValid, true);
+ QVERIFY(key.isValid());
QCOMPARE(getPrivate(key)->key, 1);
delete p1;
@@ -189,7 +189,7 @@ void tst_QPixmapCache::setCacheLimit()
key2 = QPixmapCache::insert(*p1);
QCOMPARE(getPrivate(key2)->key, 1);
//This old key is not valid anymore after the flush
- QCOMPARE(getPrivate(key)->isValid, false);
+ QVERIFY(!key.isValid());
QVERIFY(QPixmapCache::find(key, &p2) == 0);
delete p1;
}
@@ -233,7 +233,7 @@ void tst_QPixmapCache::find()
//at that time the first key has been erase because no more place in the cache
QVERIFY(QPixmapCache::find(key, &p1) == 0);
- QCOMPARE(getPrivate(key)->isValid, false);
+ QVERIFY(!key.isValid());
}
void tst_QPixmapCache::insert()
@@ -313,7 +313,7 @@ void tst_QPixmapCache::replace()
p2.fill(Qt::yellow);
QPixmapCache::Key key = QPixmapCache::insert(p1);
- QCOMPARE(getPrivate(key)->isValid, true);
+ QVERIFY(key.isValid());
QPixmap p3;
QVERIFY(QPixmapCache::find(key, &p3) == 1);
@@ -321,7 +321,7 @@ void tst_QPixmapCache::replace()
QPixmapCache::replace(key, p2);
QVERIFY(QPixmapCache::find(key, &p3) == 1);
- QCOMPARE(getPrivate(key)->isValid, true);
+ QVERIFY(key.isValid());
QCOMPARE(getPrivate(key)->key, 1);
QCOMPARE(p3.width(), 10);
@@ -438,7 +438,7 @@ void tst_QPixmapCache::clear()
for (int k = 0; k < numberOfKeys; ++k) {
QVERIFY(QPixmapCache::find(keys.at(k), &p1) == 0);
- QCOMPARE(getPrivate(keys[k])->isValid, false);
+ QVERIFY(!keys[k].isValid());
}
}