summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAnders Hafreager <andershaf@gmail.com>2018-02-21 11:47:54 +0100
committerAnders Hafreager <andershaf@gmail.com>2018-02-28 16:32:19 +0000
commit912d3bdc6471053a61b747cac7376fba20c4e8a2 (patch)
tree5e430d37cf188af673e88d0b6f5b0bd77cef2416 /tests
parentf7e01ffeb3626432cabe3d1ad245827e4217375c (diff)
Add test to check if readding shader removes dna from m_pendingRemoval
Task-number: QTBUG-66498 Change-Id: Icb18a996c9384b3e41f296694d91b13677f054c4 Reviewed-by: Svenn-Arne Dragly <svenn-arne.dragly@qt.io> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/render/shadercache/tst_shadercache.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/auto/render/shadercache/tst_shadercache.cpp b/tests/auto/render/shadercache/tst_shadercache.cpp
index 49628ef0f..261548d69 100644
--- a/tests/auto/render/shadercache/tst_shadercache.cpp
+++ b/tests/auto/render/shadercache/tst_shadercache.cpp
@@ -46,6 +46,7 @@ class tst_ShaderCache : public QObject
private Q_SLOTS:
void insert();
+ void insertAfterRemoval();
void value();
void removeRef();
void purge();
@@ -81,6 +82,32 @@ void tst_ShaderCache::insert()
QCOMPARE(cache.m_pendingRemoval.isEmpty(), true);
}
+void tst_ShaderCache::insertAfterRemoval()
+{
+ // GIVEN
+ ShaderCache cache;
+ auto dna = ProgramDNA(12345);
+ auto nodeId = QNodeId::createId();
+
+ // WHEN
+ QOpenGLShaderProgram *shaderProgram = new QOpenGLShaderProgram();
+ cache.insert(dna, nodeId, shaderProgram);
+ cache.getShaderProgramAndAddRef(dna, nodeId);
+ cache.removeRef(dna, nodeId);
+ shaderProgram = cache.getShaderProgramAndAddRef(dna, nodeId);
+
+ // THEN
+ QVERIFY(!cache.m_pendingRemoval.contains(dna));
+
+ // WHEN
+ cache.removeRef(dna, nodeId);
+ cache.getShaderProgramAndAddRef(dna, nodeId);
+ cache.purge();
+
+ // THEN
+ QCOMPARE(cache.m_programHash.size(), 1);
+}
+
void tst_ShaderCache::value()
{
// GIVEN