diff options
author | Antti Määttä <antti.maatta@qt.io> | 2016-10-24 16:21:06 +0300 |
---|---|---|
committer | Antti Määttä <antti.maatta@qt.io> | 2017-01-25 07:59:35 +0000 |
commit | 16e11dd7635c7d908a5fd8f97bff3ecddf63e899 (patch) | |
tree | 006fde5335615b926a30064f4a0ae20cfcb8cb9e | |
parent | 6b66636edab861a5eafa576305efd859f0d58395 (diff) |
Add unit tests for the EventForward backend node
Change-Id: I1b04c3a89e52923b31adbd60bc88c906c020a93a
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
-rw-r--r-- | tests/auto/render/eventforward/eventforward.pro | 12 | ||||
-rw-r--r-- | tests/auto/render/eventforward/tst_eventforward.cpp | 197 | ||||
-rw-r--r-- | tests/auto/render/render.pro | 3 |
3 files changed, 211 insertions, 1 deletions
diff --git a/tests/auto/render/eventforward/eventforward.pro b/tests/auto/render/eventforward/eventforward.pro new file mode 100644 index 000000000..22b481c77 --- /dev/null +++ b/tests/auto/render/eventforward/eventforward.pro @@ -0,0 +1,12 @@ +TEMPLATE = app + +TARGET = tst_eventforward + +QT += 3dcore 3dcore-private 3drender 3drender-private testlib + +CONFIG += testcase + +SOURCES += tst_eventforward.cpp + +include(../../core/common/common.pri) +include(../commons/commons.pri) diff --git a/tests/auto/render/eventforward/tst_eventforward.cpp b/tests/auto/render/eventforward/tst_eventforward.cpp new file mode 100644 index 000000000..9a87fc40f --- /dev/null +++ b/tests/auto/render/eventforward/tst_eventforward.cpp @@ -0,0 +1,197 @@ +/**************************************************************************** +** +** Copyright (C) 2017 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 <Qt3DRender/qeventforward.h> +#include <Qt3DRender/private/qeventforward_p.h> +#include <Qt3DRender/private/eventforward_p.h> +#include <Qt3DCore/qpropertyupdatedchange.h> +#include "qbackendnodetester.h" +#include "testrenderer.h" + +class tst_EventForward : public Qt3DCore::QBackendNodeTester +{ + Q_OBJECT + +private Q_SLOTS: + + void checkInitialState() + { + // GIVEN + Qt3DRender::Render::EventForward backendEventForward; + + // THEN + QCOMPARE(backendEventForward.isEnabled(), false); + QVERIFY(backendEventForward.peerId().isNull()); + QCOMPARE(backendEventForward.target(), nullptr); + QCOMPARE(backendEventForward.coordinateAttribute(), QStringLiteral("")); + QCOMPARE(backendEventForward.coordinateTransform(), QMatrix4x4()); + QCOMPARE(backendEventForward.forwardMouseEvents(), false); + QCOMPARE(backendEventForward.forwardKeyboardEvents(), false); + } + + void checkCleanupState() + { + // GIVEN + Qt3DRender::Render::EventForward backendEventForward; + QScopedPointer<QObject> obj(new QObject()); + QMatrix4x4 transform; + transform.scale(1.0f, 2.0f, 3.0f); + + // WHEN + backendEventForward.setEnabled(true); + backendEventForward.setTarget(obj.data()); + backendEventForward.setCoordinateAttribute(QStringLiteral("default")); + backendEventForward.setCoordinateTransform(transform); + backendEventForward.setForwardMouseEvents(true); + backendEventForward.setForwardKeyboardEvents(true); + + backendEventForward.cleanup(); + + // THEN + QCOMPARE(backendEventForward.isEnabled(), false); + QCOMPARE(backendEventForward.target(), nullptr); + QCOMPARE(backendEventForward.coordinateAttribute(), QStringLiteral("")); + QCOMPARE(backendEventForward.coordinateTransform(), QMatrix4x4()); + QCOMPARE(backendEventForward.forwardMouseEvents(), false); + QCOMPARE(backendEventForward.forwardKeyboardEvents(), false); + } + + void checkInitializeFromPeer() + { + // GIVEN + Qt3DRender::QEventForward eventForward; + + { + // WHEN + Qt3DRender::Render::EventForward backendEventForward; + simulateInitialization(&eventForward, &backendEventForward); + + // THEN + QCOMPARE(backendEventForward.isEnabled(), true); + QCOMPARE(backendEventForward.peerId(), eventForward.id()); + QCOMPARE(backendEventForward.target(), nullptr); + QCOMPARE(backendEventForward.coordinateAttribute(), QStringLiteral("default")); + QCOMPARE(backendEventForward.coordinateTransform(), QMatrix4x4()); + QCOMPARE(backendEventForward.forwardMouseEvents(), true); + QCOMPARE(backendEventForward.forwardKeyboardEvents(), false); + } + { + // WHEN + Qt3DRender::Render::EventForward backendEventForward; + eventForward.setEnabled(false); + simulateInitialization(&eventForward, &backendEventForward); + + // THEN + QCOMPARE(backendEventForward.peerId(), eventForward.id()); + QCOMPARE(backendEventForward.isEnabled(), false); + } + } + + void checkSceneChangeEvents() + { + // GIVEN + Qt3DRender::Render::EventForward backendEventForward; + TestRenderer renderer; + backendEventForward.setRenderer(&renderer); + + { + // WHEN + const bool newValue = false; + const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId()); + change->setPropertyName("enabled"); + change->setValue(newValue); + backendEventForward.sceneChangeEvent(change); + + // THEN + QCOMPARE(backendEventForward.isEnabled(), newValue); + } + { + // WHEN + QScopedPointer<Qt3DRender::QEventForward> obj(new Qt3DRender::QEventForward()); + Qt3DRender::QEventForward * newValue = obj.data(); + const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId()); + change->setPropertyName("target"); + change->setValue(QVariant::fromValue(newValue)); + backendEventForward.sceneChangeEvent(change); + + // THEN + QCOMPARE(backendEventForward.target(), newValue); + } + { + // WHEN + const QString newValue = QStringLiteral("position"); + const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId()); + change->setPropertyName("coordinateAttribute"); + change->setValue(QVariant::fromValue(newValue)); + backendEventForward.sceneChangeEvent(change); + + // THEN + QCOMPARE(backendEventForward.coordinateAttribute(), newValue); + } + { + // WHEN + QMatrix4x4 newValue; + newValue.rotate(2.0f, QVector3D(0, 0, 1.0f)); + const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId()); + change->setPropertyName("coordinateTransform"); + change->setValue(QVariant::fromValue(newValue)); + backendEventForward.sceneChangeEvent(change); + + // THEN + QCOMPARE(backendEventForward.coordinateTransform(), newValue); + } + { + // WHEN + const bool newValue = true; + const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId()); + change->setPropertyName("forwardMouseEvents"); + change->setValue(QVariant::fromValue(newValue)); + backendEventForward.sceneChangeEvent(change); + + // THEN + QCOMPARE(backendEventForward.forwardMouseEvents(), newValue); + } + { + // WHEN + const bool newValue = true; + const auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(Qt3DCore::QNodeId()); + change->setPropertyName("forwardKeyboardEvents"); + change->setValue(QVariant::fromValue(newValue)); + backendEventForward.sceneChangeEvent(change); + + // THEN + QCOMPARE(backendEventForward.forwardKeyboardEvents(), newValue); + } + } + +}; + +QTEST_MAIN(tst_EventForward) + +#include "tst_eventforward.moc" diff --git a/tests/auto/render/render.pro b/tests/auto/render/render.pro index c42d47e1f..34c07f7dc 100644 --- a/tests/auto/render/render.pro +++ b/tests/auto/render/render.pro @@ -97,7 +97,8 @@ qtConfig(private_tests) { rendercapture \ trianglevisitor \ qmemorybarrier \ - qeventforward + qeventforward \ + eventforward !macos: SUBDIRS += graphicshelpergl4 } |