diff options
author | Mike Krus <mike.krus@kdab.com> | 2020-02-17 22:06:33 +0000 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2020-02-17 22:06:44 +0000 |
commit | 67c9d9e9e665bb5754ffcdd5963189d73672f5a7 (patch) | |
tree | 2168cae3806c937ce1f1ce8faacdf83fe6c35df1 /tests/auto/render | |
parent | 8f9a0e499243915aca0e719fef0a5bb075542ea4 (diff) | |
parent | aa7c8a5cb1111d46289e6b370dcd5b1d3f66c80d (diff) |
Merge remote-tracking branch 5.15 into dev
Change-Id: I2777f6a40b9029ef5569a84e04f9e18a914504e7
Diffstat (limited to 'tests/auto/render')
-rw-r--r-- | tests/auto/render/rendertarget/tst_rendertarget.cpp | 40 | ||||
-rw-r--r-- | tests/auto/render/shader/tst_shader.cpp | 42 |
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" |