summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorKevin Ottens <kevin.ottens@kdab.com>2016-08-05 11:04:12 +0200
committerSean Harmer <sean.harmer@kdab.com>2016-08-07 18:49:09 +0000
commite2b9d0b15cc3ad0072cb3e404e3079e640e555cc (patch)
tree8df9380b5a751015bd897fe9dd1cedb05fbcf707 /tests
parent5dc4c77408ff040dc4a50c3837f4b2a29e927cb8 (diff)
Convenience to locate QRenderSurfaceSelector
This is in fact done at several places nowadays, sometimes with bugs, so let's provide a single tested implementation for it. Change-Id: I782ba18a15e5b4a3b320ac6b472173b1f8e417a3 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/render/qrendersurfaceselector/qrendersurfaceselector.pro10
-rw-r--r--tests/auto/render/qrendersurfaceselector/tst_qrendersurfaceselector.cpp107
-rw-r--r--tests/auto/render/render.pro3
3 files changed, 119 insertions, 1 deletions
diff --git a/tests/auto/render/qrendersurfaceselector/qrendersurfaceselector.pro b/tests/auto/render/qrendersurfaceselector/qrendersurfaceselector.pro
new file mode 100644
index 000000000..57626b9ef
--- /dev/null
+++ b/tests/auto/render/qrendersurfaceselector/qrendersurfaceselector.pro
@@ -0,0 +1,10 @@
+TEMPLATE = app
+
+TARGET = tst_qrendersurfaceselector
+QT += core-private 3dcore 3dcore-private 3drender 3drender-private testlib
+
+CONFIG += testcase
+
+SOURCES += tst_qrendersurfaceselector.cpp
+
+include(../commons/commons.pri)
diff --git a/tests/auto/render/qrendersurfaceselector/tst_qrendersurfaceselector.cpp b/tests/auto/render/qrendersurfaceselector/tst_qrendersurfaceselector.cpp
new file mode 100644
index 000000000..17c7cf40d
--- /dev/null
+++ b/tests/auto/render/qrendersurfaceselector/tst_qrendersurfaceselector.cpp
@@ -0,0 +1,107 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 Klaralvdalens Datakonsult AB (KDAB).
+** 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 <Qt3DCore/qentity.h>
+
+#include <Qt3DRender/qrendersettings.h>
+#include <Qt3DRender/qrendersurfaceselector.h>
+#include <Qt3DRender/private/qrendersurfaceselector_p.h>
+
+class tst_QRenderSurfaceSelector: public QObject
+{
+ Q_OBJECT
+
+private Q_SLOTS:
+ void shouldFindInstanceInEntityTree_data()
+ {
+ QTest::addColumn<QSharedPointer<Qt3DCore::QEntity>>("root");
+ QTest::addColumn<Qt3DRender::QRenderSurfaceSelector*>("expected");
+
+ auto root = QSharedPointer<Qt3DCore::QEntity>::create();
+ auto settings = new Qt3DRender::QRenderSettings;
+ root->addComponent(settings);
+ auto selector = new Qt3DRender::QRenderSurfaceSelector;
+ settings->setActiveFrameGraph(selector);
+ QTest::newRow("simplest_tree") << root << selector;
+
+ root = QSharedPointer<Qt3DCore::QEntity>::create();
+ settings = new Qt3DRender::QRenderSettings;
+ root->addComponent(settings);
+ settings->setActiveFrameGraph(new Qt3DRender::QFrameGraphNode);
+ selector = nullptr;
+ QTest::newRow("no_selector") << root << selector;
+
+ root = QSharedPointer<Qt3DCore::QEntity>::create();
+ settings = new Qt3DRender::QRenderSettings;
+ root->addComponent(settings);
+ selector = nullptr;
+ QTest::newRow("no_framegraph") << root << selector;
+
+ root = QSharedPointer<Qt3DCore::QEntity>::create();
+ selector = nullptr;
+ QTest::newRow("no_rendersettings") << root << selector;
+
+ root = QSharedPointer<Qt3DCore::QEntity>::create();
+ auto entity = new Qt3DCore::QEntity(root.data());
+ entity = new Qt3DCore::QEntity(entity);
+ settings = new Qt3DRender::QRenderSettings;
+ entity->addComponent(settings);
+ selector = new Qt3DRender::QRenderSurfaceSelector;
+ settings->setActiveFrameGraph(selector);
+ QTest::newRow("in_subentity") << root << selector;
+
+ root = QSharedPointer<Qt3DCore::QEntity>::create();
+ entity = new Qt3DCore::QEntity(root.data());
+ entity = new Qt3DCore::QEntity(entity);
+ settings = new Qt3DRender::QRenderSettings;
+ entity->addComponent(settings);
+ auto node = new Qt3DRender::QFrameGraphNode;
+ settings->setActiveFrameGraph(node);
+ node = new Qt3DRender::QFrameGraphNode(node);
+ selector = new Qt3DRender::QRenderSurfaceSelector(node);
+ QTest::newRow("in_deeper_framegraph") << root << selector;
+ }
+
+ void shouldFindInstanceInEntityTree()
+ {
+ // GIVEN
+ QFETCH(QSharedPointer<Qt3DCore::QEntity>, root);
+
+ // WHEN
+ auto selector = Qt3DRender::QRenderSurfaceSelectorPrivate::find(root.data());
+
+ // THEN
+ QFETCH(Qt3DRender::QRenderSurfaceSelector*, expected);
+ QCOMPARE(selector, expected);
+ }
+};
+
+QTEST_MAIN(tst_QRenderSurfaceSelector)
+
+#include "tst_qrendersurfaceselector.moc"
diff --git a/tests/auto/render/render.pro b/tests/auto/render/render.pro
index bfd2abe09..7cd682e13 100644
--- a/tests/auto/render/render.pro
+++ b/tests/auto/render/render.pro
@@ -49,5 +49,6 @@ contains(QT_CONFIG, private_tests) {
layerfiltering \
filterentitybycomponent \
genericlambdajob \
- qgraphicsapifilter
+ qgraphicsapifilter \
+ qrendersurfaceselector
}