diff options
author | Antti Määttä <antti.maatta@qt.io> | 2016-08-22 08:17:58 +0300 |
---|---|---|
committer | Antti Määttä <antti.maatta@qt.io> | 2017-01-09 11:56:02 +0000 |
commit | 58bc331a2c076513aeea195cb0d54d1d23bf16f0 (patch) | |
tree | 47fa414e9c3567caa72631745601707bb4b7335a | |
parent | da566710685118dfce4919595ff6cb1d0ad61842 (diff) |
Unit tests for render capture backend node
Add unit tests for the render capture backend node and make small changes
to backend node to make them work.
Change-Id: I053d85755f5f53ac4de08c63ca88537696d1d7b2
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
-rw-r--r-- | src/render/framegraph/rendercapture.cpp | 1 | ||||
-rw-r--r-- | src/render/framegraph/rendercapture_p.h | 2 | ||||
-rw-r--r-- | tests/auto/core/common/qbackendnodetester.cpp | 5 | ||||
-rw-r--r-- | tests/auto/core/common/qbackendnodetester.h | 2 | ||||
-rw-r--r-- | tests/auto/render/render.pro | 3 | ||||
-rw-r--r-- | tests/auto/render/rendercapture/rendercapture.pro | 12 | ||||
-rw-r--r-- | tests/auto/render/rendercapture/tst_rendercapture.cpp | 125 |
7 files changed, 147 insertions, 3 deletions
diff --git a/src/render/framegraph/rendercapture.cpp b/src/render/framegraph/rendercapture.cpp index f123fd74c..6b6c48375 100644 --- a/src/render/framegraph/rendercapture.cpp +++ b/src/render/framegraph/rendercapture.cpp @@ -74,7 +74,6 @@ void RenderCapture::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) requestCapture(propertyChange->value().toInt()); } } - markDirty(AbstractRenderer::AllDirty); FrameGraphNode::sceneChangeEvent(e); } diff --git a/src/render/framegraph/rendercapture_p.h b/src/render/framegraph/rendercapture_p.h index e2b87474c..6a5b0c08f 100644 --- a/src/render/framegraph/rendercapture_p.h +++ b/src/render/framegraph/rendercapture_p.h @@ -69,7 +69,7 @@ public: void sendRenderCaptures(); protected: - virtual void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e); + void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) Q_DECL_FINAL; private: diff --git a/tests/auto/core/common/qbackendnodetester.cpp b/tests/auto/core/common/qbackendnodetester.cpp index 6e2dd6414..8534a05cd 100644 --- a/tests/auto/core/common/qbackendnodetester.cpp +++ b/tests/auto/core/common/qbackendnodetester.cpp @@ -57,6 +57,11 @@ void QBackendNodeTester::simulateInitialization(QNode *frontend, QBackendNode *b backend->initializeFromPeer(change); } +void QBackendNodeTester::sceneChangeEvent(QBackendNode *backend, const Qt3DCore::QSceneChangePtr &e) +{ + backend->sceneChangeEvent(e); +} + } // namespace Qt3DCore QT_END_NAMESPACE diff --git a/tests/auto/core/common/qbackendnodetester.h b/tests/auto/core/common/qbackendnodetester.h index 88ee37515..fbd6c9581 100644 --- a/tests/auto/core/common/qbackendnodetester.h +++ b/tests/auto/core/common/qbackendnodetester.h @@ -39,6 +39,7 @@ #include <QObject> #include <Qt3DCore/qnodeid.h> +#include <Qt3DCore/qscenechange.h> QT_BEGIN_NAMESPACE @@ -55,6 +56,7 @@ public: // Proxies to allow test classes to call private methods on QBackendNode void simulateInitialization(QNode *frontend, QBackendNode *backend); + void sceneChangeEvent(QBackendNode *backend, const Qt3DCore::QSceneChangePtr &e); }; } // namespace Qt3DCore diff --git a/tests/auto/render/render.pro b/tests/auto/render/render.pro index ce6aa6293..56877f99d 100644 --- a/tests/auto/render/render.pro +++ b/tests/auto/render/render.pro @@ -92,7 +92,8 @@ qtConfig(private_tests) { technique \ materialparametergathererjob \ renderviewbuilder \ - filtercompatibletechniquejob + filtercompatibletechniquejob \ + rendercapture !macos: SUBDIRS += graphicshelpergl4 } diff --git a/tests/auto/render/rendercapture/rendercapture.pro b/tests/auto/render/rendercapture/rendercapture.pro new file mode 100644 index 000000000..419e15af0 --- /dev/null +++ b/tests/auto/render/rendercapture/rendercapture.pro @@ -0,0 +1,12 @@ +TEMPLATE = app + +TARGET = rendercapture + +QT += 3dcore 3dcore-private 3drender 3drender-private testlib + +CONFIG += testcase + +SOURCES += tst_rendercapture.cpp + +include(../../core/common/common.pri) +include(../commons/commons.pri) diff --git a/tests/auto/render/rendercapture/tst_rendercapture.cpp b/tests/auto/render/rendercapture/tst_rendercapture.cpp new file mode 100644 index 000000000..4029ba136 --- /dev/null +++ b/tests/auto/render/rendercapture/tst_rendercapture.cpp @@ -0,0 +1,125 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt3D module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtTest/QTest> +#include <qbackendnodetester.h> +#include <Qt3DRender/private/rendercapture_p.h> +#include <Qt3DRender/qrendercapture.h> +#include <Qt3DCore/private/qbackendnode_p.h> +#include <Qt3DCore/qpropertyupdatedchange.h> +#include "testpostmanarbiter.h" +#include "testrenderer.h" + +class tst_RenderCapture : public Qt3DCore::QBackendNodeTester +{ + Q_OBJECT +private Q_SLOTS: + + void checkInitialState() + { + // GIVEN + Qt3DRender::QRenderCapture frontend; + Qt3DRender::Render::RenderCapture backend; + + // WHEN + simulateInitialization(&frontend, &backend); + + // THEN + QVERIFY(!backend.peerId().isNull()); + QCOMPARE(backend.wasCaptureRequested(), false); + QCOMPARE(backend.isEnabled(), true); + } + + void checkEnabledPropertyChange() + { + // GIVEN + Qt3DRender::Render::RenderCapture renderCapture; + TestRenderer renderer; + renderCapture.setRenderer(&renderer); + + // WHEN + Qt3DCore::QPropertyUpdatedChangePtr change(new Qt3DCore::QPropertyUpdatedChange(renderCapture.peerId())); + change->setPropertyName(QByteArrayLiteral("enabled")); + change->setValue(QVariant::fromValue(true)); + sceneChangeEvent(&renderCapture, change); + + // THEN + QCOMPARE(renderCapture.isEnabled(), true); + } + + void checkReceiveRenderCaptureRequest() + { + // GIVEN + Qt3DRender::Render::RenderCapture renderCapture; + TestRenderer renderer; + renderCapture.setRenderer(&renderer); + renderCapture.setEnabled(true); + + // WHEN + Qt3DCore::QPropertyUpdatedChangePtr change(new Qt3DCore::QPropertyUpdatedChange(renderCapture.peerId())); + change->setPropertyName(QByteArrayLiteral("renderCaptureRequest")); + change->setValue(QVariant::fromValue(32)); + sceneChangeEvent(&renderCapture, change); + + // THEN + QCOMPARE(renderCapture.wasCaptureRequested(), true); + } + + void checkAcknowledgeCaptureRequest() + { + // GIVEN + Qt3DRender::Render::RenderCapture renderCapture; + TestRenderer renderer; + renderCapture.setRenderer(&renderer); + renderCapture.setEnabled(true); + + // WHEN + renderCapture.requestCapture(2); + renderCapture.requestCapture(4); + + // THEN + QCOMPARE(renderCapture.wasCaptureRequested(), true); + + // WHEN + renderCapture.acknowledgeCaptureRequest(); + + // THEN + QCOMPARE(renderCapture.wasCaptureRequested(), true); + + // WHEN + renderCapture.acknowledgeCaptureRequest(); + + // THEN + QCOMPARE(renderCapture.wasCaptureRequested(), false); + } +}; + + +QTEST_APPLESS_MAIN(tst_RenderCapture) + +#include "tst_rendercapture.moc" |