diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-07-31 13:06:27 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2015-08-07 00:12:05 +0000 |
commit | 3a758842ee6893e996ce038b39b9be5bbf4e2c6e (patch) | |
tree | 9712382626b4458a1b303442c4088cb8a21ed26e /tests | |
parent | a585e4b2670f7bfc3d44a731472c9f7fb9ca6698 (diff) |
Unit tests for RenderGeometry
Change-Id: Ife9e6572349ffbb14c95e75b12d35f8800612f32
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/render/render.pro | 3 | ||||
-rw-r--r-- | tests/auto/render/rendergeometry/rendergeometry.pro | 9 | ||||
-rw-r--r-- | tests/auto/render/rendergeometry/tst_rendergeometry.cpp | 144 |
3 files changed, 155 insertions, 1 deletions
diff --git a/tests/auto/render/render.pro b/tests/auto/render/render.pro index 89e21e688..0a3e6322f 100644 --- a/tests/auto/render/render.pro +++ b/tests/auto/render/render.pro @@ -19,5 +19,6 @@ contains(QT_CONFIG, private_tests) { qgeometry \ qgeometryrenderer \ renderbuffer \ - renderattribute + renderattribute \ + rendergeometry } diff --git a/tests/auto/render/rendergeometry/rendergeometry.pro b/tests/auto/render/rendergeometry/rendergeometry.pro new file mode 100644 index 000000000..7ca493242 --- /dev/null +++ b/tests/auto/render/rendergeometry/rendergeometry.pro @@ -0,0 +1,9 @@ +TEMPLATE = app + +TARGET = tst_rendergeometry + +QT += 3dcore 3dcore-private 3drenderer 3drenderer-private testlib + +CONFIG += testcase + +SOURCES += tst_rendergeometry.cpp diff --git a/tests/auto/render/rendergeometry/tst_rendergeometry.cpp b/tests/auto/render/rendergeometry/tst_rendergeometry.cpp new file mode 100644 index 000000000..d0f8f9985 --- /dev/null +++ b/tests/auto/render/rendergeometry/tst_rendergeometry.cpp @@ -0,0 +1,144 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Klaralvdalens Datakonsult AB (KDAB). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt3D module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtTest/QTest> +#include <Qt3DRenderer/private/rendergeometry_p.h> +#include <Qt3DRenderer/qgeometry.h> +#include <Qt3DRenderer/qattribute.h> +#include <Qt3DCore/qscenepropertychange.h> + +class tst_RenderGeometry : public QObject +{ + Q_OBJECT +private Q_SLOTS: + + void checkPeerPropertyMirroring() + { + // GIVEN + Qt3D::Render::RenderGeometry renderGeometry; + + Qt3D::QGeometry geometry; + Qt3D::QAttribute attr1; + Qt3D::QAttribute attr2; + Qt3D::QAttribute attr4; + Qt3D::QAttribute attr3; + + geometry.addAttribute(&attr1); + geometry.addAttribute(&attr2); + geometry.addAttribute(&attr3); + geometry.addAttribute(&attr4); + + // WHEN + renderGeometry.setPeer(&geometry); + + // THEN + QCOMPARE(renderGeometry.peerUuid(), geometry.id()); + QCOMPARE(renderGeometry.isDirty(), true); + QCOMPARE(renderGeometry.attributes().count(), 4); + + for (int i = 0; i < 4; ++i) + QCOMPARE(geometry.attributes().at(i)->id(), renderGeometry.attributes().at(i)); + } + + void checkInitialAndCleanedUpState() + { + // GIVEN + Qt3D::Render::RenderGeometry renderGeometry; + + // THEN + QCOMPARE(renderGeometry.isDirty(), false); + QVERIFY(renderGeometry.attributes().isEmpty()); + QVERIFY(renderGeometry.peerUuid().isNull()); + + // GIVEN + Qt3D::QGeometry geometry; + Qt3D::QAttribute attr1; + Qt3D::QAttribute attr2; + Qt3D::QAttribute attr4; + Qt3D::QAttribute attr3; + + geometry.addAttribute(&attr1); + geometry.addAttribute(&attr2); + geometry.addAttribute(&attr3); + geometry.addAttribute(&attr4); + + // WHEN + renderGeometry.updateFromPeer(&geometry); + renderGeometry.cleanup(); + + // THEN + QCOMPARE(renderGeometry.isDirty(), false); + QVERIFY(renderGeometry.attributes().isEmpty()); + } + + void checkPropertyChanges() + { + // GIVEN + Qt3D::Render::RenderGeometry renderGeometry; + Qt3D::QNodeId geometryId = Qt3D::QNodeId::createId(); + + // WHEN + Qt3D::QScenePropertyChangePtr updateChange(new Qt3D::QScenePropertyChange(Qt3D::NodeAdded, Qt3D::QSceneChange::Node, Qt3D::QNodeId())); + updateChange->setValue(QVariant::fromValue(geometryId)); + updateChange->setPropertyName("attribute"); + renderGeometry.sceneChangeEvent(updateChange); + + // THEN + QCOMPARE(renderGeometry.attributes().count(), 1); + QVERIFY(renderGeometry.isDirty()); + + renderGeometry.unsetDirty(); + QVERIFY(!renderGeometry.isDirty()); + + // WHEN + updateChange.reset(new Qt3D::QScenePropertyChange(Qt3D::NodeRemoved, Qt3D::QSceneChange::Node, Qt3D::QNodeId())); + updateChange->setValue(QVariant::fromValue(geometryId)); + updateChange->setPropertyName("attribute"); + renderGeometry.sceneChangeEvent(updateChange); + + // THEN + QCOMPARE(renderGeometry.attributes().count(), 0); + QVERIFY(renderGeometry.isDirty()); + + renderGeometry.unsetDirty(); + QVERIFY(!renderGeometry.isDirty()); + } +}; + + +QTEST_APPLESS_MAIN(tst_RenderGeometry) + +#include "tst_rendergeometry.moc" |