summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntti Määttä <antti.maatta@qt.io>2016-08-22 08:17:58 +0300
committerAntti Määttä <antti.maatta@qt.io>2017-01-09 11:56:02 +0000
commit58bc331a2c076513aeea195cb0d54d1d23bf16f0 (patch)
tree47fa414e9c3567caa72631745601707bb4b7335a
parentda566710685118dfce4919595ff6cb1d0ad61842 (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.cpp1
-rw-r--r--src/render/framegraph/rendercapture_p.h2
-rw-r--r--tests/auto/core/common/qbackendnodetester.cpp5
-rw-r--r--tests/auto/core/common/qbackendnodetester.h2
-rw-r--r--tests/auto/render/render.pro3
-rw-r--r--tests/auto/render/rendercapture/rendercapture.pro12
-rw-r--r--tests/auto/render/rendercapture/tst_rendercapture.cpp125
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"