summaryrefslogtreecommitdiffstats
path: root/tests/auto/render
diff options
context:
space:
mode:
authorMike Krus <mike.krus@kdab.com>2020-02-17 22:06:33 +0000
committerMike Krus <mike.krus@kdab.com>2020-02-17 22:06:44 +0000
commit67c9d9e9e665bb5754ffcdd5963189d73672f5a7 (patch)
tree2168cae3806c937ce1f1ce8faacdf83fe6c35df1 /tests/auto/render
parent8f9a0e499243915aca0e719fef0a5bb075542ea4 (diff)
parentaa7c8a5cb1111d46289e6b370dcd5b1d3f66c80d (diff)
Merge remote-tracking branch 5.15 into dev
Diffstat (limited to 'tests/auto/render')
-rw-r--r--tests/auto/render/rendertarget/tst_rendertarget.cpp40
-rw-r--r--tests/auto/render/shader/tst_shader.cpp42
2 files changed, 82 insertions, 0 deletions
diff --git a/tests/auto/render/rendertarget/tst_rendertarget.cpp b/tests/auto/render/rendertarget/tst_rendertarget.cpp
index 31eee6ec5..8170c022a 100644
--- a/tests/auto/render/rendertarget/tst_rendertarget.cpp
+++ b/tests/auto/render/rendertarget/tst_rendertarget.cpp
@@ -32,6 +32,7 @@
#include <Qt3DRender/qrendertargetoutput.h>
#include <Qt3DRender/private/qrendertarget_p.h>
#include <Qt3DRender/private/rendertarget_p.h>
+#include <Qt3DRender/private/managers_p.h>
#include "qbackendnodetester.h"
#include "testrenderer.h"
@@ -205,6 +206,45 @@ private Q_SLOTS:
}
}
+ void checkRenderTargetManager()
+ {
+ // GIVEN
+ Qt3DRender::QRenderTarget renderTarget;
+ TestRenderer renderer;
+ Qt3DRender::Render::RenderTargetManager manager;
+ Qt3DRender::Render::RenderTargetFunctor creationFunctor(&renderer, &manager);
+
+ // THEN
+ QVERIFY(manager.renderTargetIdsToCleanup().isEmpty());
+
+ // WHEN
+ auto backend = creationFunctor.create(renderTarget.id());
+
+ // THEN
+ QVERIFY(backend != nullptr);
+ QVERIFY(manager.renderTargetIdsToCleanup().isEmpty());
+
+ {
+ // WHEN
+ auto sameBackend = creationFunctor.get(renderTarget.id());
+ // THEN
+ QCOMPARE(backend, sameBackend);
+ }
+
+ // WHEN
+ creationFunctor.destroy(renderTarget.id());
+
+ // THEN -> Should be in list of ids to remove and return null on get
+ QVERIFY(manager.renderTargetIdsToCleanup().contains(renderTarget.id()));
+ QVERIFY(creationFunctor.get(renderTarget.id()) == nullptr);
+
+ // WHEN -> Should be removed from list of ids to remove
+ creationFunctor.create(renderTarget.id());
+
+ // THEN
+ QVERIFY(manager.renderTargetIdsToCleanup().isEmpty());
+ QVERIFY(creationFunctor.get(renderTarget.id()) != nullptr);
+ }
};
QTEST_MAIN(tst_RenderTarget)
diff --git a/tests/auto/render/shader/tst_shader.cpp b/tests/auto/render/shader/tst_shader.cpp
index a1f837010..d9d0f58e9 100644
--- a/tests/auto/render/shader/tst_shader.cpp
+++ b/tests/auto/render/shader/tst_shader.cpp
@@ -29,6 +29,7 @@
#include <QtTest/QTest>
#include <qbackendnodetester.h>
#include <Qt3DRender/private/shader_p.h>
+#include <Qt3DRender/private/managers_p.h>
#include <Qt3DRender/qshaderprogram.h>
#include "testrenderer.h"
@@ -46,6 +47,7 @@ private slots:
void checkSetRendererDirtyOnInitialization();
void allowToChangeShaderCode_data();
void allowToChangeShaderCode();
+ void checkShaderManager();
};
@@ -278,6 +280,46 @@ void tst_RenderShader::allowToChangeShaderCode()
renderer.resetDirty();
}
+void tst_RenderShader::checkShaderManager()
+{
+ // GIVEN
+ Qt3DRender::QShaderProgram shader;
+ TestRenderer renderer;
+ Qt3DRender::Render::ShaderManager manager;
+ Qt3DRender::Render::ShaderFunctor creationFunctor(&renderer, &manager);
+
+ // THEN
+ QVERIFY(manager.shaderIdsToCleanup().isEmpty());
+
+ // WHEN
+ auto backend = creationFunctor.create(shader.id());
+
+ // THEN
+ QVERIFY(backend != nullptr);
+ QVERIFY(manager.shaderIdsToCleanup().isEmpty());
+
+ {
+ // WHEN
+ auto sameBackend = creationFunctor.get(shader.id());
+ // THEN
+ QCOMPARE(backend, sameBackend);
+ }
+
+ // WHEN
+ creationFunctor.destroy(shader.id());
+
+ // THEN -> Should be in list of ids to remove and return null on get
+ QVERIFY(manager.hasShaderIdToCleanup(shader.id()));
+ QVERIFY(creationFunctor.get(shader.id()) == nullptr);
+
+ // WHEN -> Should be removed from list of ids to remove
+ creationFunctor.create(shader.id());
+
+ // THEN
+ QVERIFY(manager.shaderIdsToCleanup().isEmpty());
+ QCOMPARE(creationFunctor.get(shader.id()), backend);
+}
+
QTEST_APPLESS_MAIN(tst_RenderShader)
#include "tst_shader.moc"