diff options
author | Sean Harmer <sean.harmer@kdab.com> | 2017-07-29 10:26:31 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2017-08-08 09:12:19 +0000 |
commit | 40b6a7f4c1544261db8a613f8ec944e7fe411d0e (patch) | |
tree | 3163cacb08e6923ab0afded2d1b8424662546138 /tests | |
parent | 80cde984ff8d8eb180bf94a64176da4e9d727a30 (diff) |
Add Armature backend node to renderer aspect
Change-Id: I35caba55beb54f60dcf2870df4edb2b7eb19c3f5
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/render/armature/armature.pro | 12 | ||||
-rw-r--r-- | tests/auto/render/armature/tst_armature.cpp | 120 | ||||
-rw-r--r-- | tests/auto/render/render.pro | 3 |
3 files changed, 134 insertions, 1 deletions
diff --git a/tests/auto/render/armature/armature.pro b/tests/auto/render/armature/armature.pro new file mode 100644 index 000000000..fc8d69eaa --- /dev/null +++ b/tests/auto/render/armature/armature.pro @@ -0,0 +1,12 @@ +TEMPLATE = app + +TARGET = tst_armature + +QT += core-private 3dcore 3dcore-private 3drender 3drender-private testlib + +CONFIG += testcase + +SOURCES += \ + tst_armature.cpp + +include(../../core/common/common.pri) diff --git a/tests/auto/render/armature/tst_armature.cpp b/tests/auto/render/armature/tst_armature.cpp new file mode 100644 index 000000000..2c481db7a --- /dev/null +++ b/tests/auto/render/armature/tst_armature.cpp @@ -0,0 +1,120 @@ +/**************************************************************************** +** +** Copyright (C) 2017 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 <Qt3DRender/private/armature_p.h> +#include <Qt3DCore/qarmature.h> +#include <Qt3DCore/qskeleton.h> +#include <Qt3DCore/private/qnode_p.h> +#include <Qt3DCore/private/qscene_p.h> +#include <Qt3DCore/qpropertyupdatedchange.h> +#include <Qt3DCore/private/qbackendnode_p.h> +#include <qbackendnodetester.h> +#include <testpostmanarbiter.h> + +using namespace Qt3DCore; +using namespace Qt3DRender; +using namespace Qt3DRender::Render; + +class tst_Armature: public Qt3DCore::QBackendNodeTester +{ + Q_OBJECT + +private Q_SLOTS: + void checkPeerPropertyMirroring() + { + // GIVEN + Armature backendArmature; + QArmature armature; + auto skeleton = new QSkeleton; + + armature.setSkeleton(skeleton); + + // WHEN + simulateInitialization(&armature, &backendArmature); + + // THEN + QCOMPARE(backendArmature.peerId(), armature.id()); + QCOMPARE(backendArmature.isEnabled(), armature.isEnabled()); + QCOMPARE(backendArmature.skeletonId(), skeleton->id()); + } + + void checkInitialAndCleanedUpState() + { + // GIVEN + Armature backendArmature; + + // THEN + QVERIFY(backendArmature.peerId().isNull()); + QCOMPARE(backendArmature.isEnabled(), false); + QCOMPARE(backendArmature.skeletonId(), Qt3DCore::QNodeId()); + + // GIVEN + QArmature armature; + auto skeleton = new QSkeleton(); + armature.setSkeleton(skeleton); + + // WHEN + simulateInitialization(&armature, &backendArmature); + backendArmature.cleanup(); + + // THEN + QCOMPARE(backendArmature.skeletonId(), Qt3DCore::QNodeId()); + QCOMPARE(backendArmature.isEnabled(), false); + } + + void checkPropertyChanges() + { + // GIVEN + Armature backendArmature; + Qt3DCore::QPropertyUpdatedChangePtr updateChange; + + // WHEN + updateChange.reset(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId())); + updateChange->setPropertyName("enabled"); + updateChange->setValue(true); + backendArmature.sceneChangeEvent(updateChange); + + // THEN + QCOMPARE(backendArmature.isEnabled(), true); + + // WHEN + auto newSkeleton = new QSkeleton(); + updateChange.reset(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId())); + updateChange->setPropertyName("skeleton"); + updateChange->setValue(QVariant::fromValue(newSkeleton->id())); + backendArmature.sceneChangeEvent(updateChange); + + // THEN + QCOMPARE(backendArmature.skeletonId(), newSkeleton->id()); + } +}; + +QTEST_APPLESS_MAIN(tst_Armature) + +#include "tst_armature.moc" diff --git a/tests/auto/render/render.pro b/tests/auto/render/render.pro index 40e2262c2..e8f08c02a 100644 --- a/tests/auto/render/render.pro +++ b/tests/auto/render/render.pro @@ -100,7 +100,8 @@ qtConfig(private_tests) { qshaderprogrambuilder \ coordinatereader \ framegraphvisitor \ - renderer + renderer \ + armature QT_FOR_CONFIG = 3dcore-private qtConfig(qt3d-extras) { |