diff options
author | Anders Hafreager <andershaf@gmail.com> | 2018-02-21 11:47:54 +0100 |
---|---|---|
committer | Anders Hafreager <andershaf@gmail.com> | 2018-02-28 16:32:19 +0000 |
commit | 912d3bdc6471053a61b747cac7376fba20c4e8a2 (patch) | |
tree | 5e430d37cf188af673e88d0b6f5b0bd77cef2416 /tests | |
parent | f7e01ffeb3626432cabe3d1ad245827e4217375c (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.cpp | 27 |
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 |