diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-08-06 15:24:00 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2015-08-07 16:50:31 +0000 |
commit | 43d49a9d24dfdc08e660ac2b4a1eb7b8ac51f33f (patch) | |
tree | 5705dd4cc1c59c99d446fdc5fe353e629312edd3 /tests | |
parent | cb6fddc83aaf7b07ed93b253af9aecdf0de46109 (diff) |
QGeometryRenderer: add a QGeometryFunctor member
Change-Id: I43219476a1d0a6d4fd9675a2875e0a091a131f5e
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/render/qgeometryrenderer/tst_qgeometryrenderer.cpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/auto/render/qgeometryrenderer/tst_qgeometryrenderer.cpp b/tests/auto/render/qgeometryrenderer/tst_qgeometryrenderer.cpp index 39a0ad7c0..b5e8c5592 100644 --- a/tests/auto/render/qgeometryrenderer/tst_qgeometryrenderer.cpp +++ b/tests/auto/render/qgeometryrenderer/tst_qgeometryrenderer.cpp @@ -42,6 +42,7 @@ #include <Qt3DCore/QScenePropertyChange> #include <Qt3DRenderer/qgeometryrenderer.h> +#include <Qt3DRenderer/qgeometryfunctor.h> #include <Qt3DRenderer/qgeometry.h> #include <Qt3DRenderer/qattribute.h> #include <Qt3DRenderer/qbuffer.h> @@ -121,6 +122,32 @@ void TestPostman::notifyBackend(const Qt3D::QSceneChangePtr &e) m_arbiter->sceneChangeEventWithLock(e); } +class TestFunctor : public Qt3D::QGeometryFunctor +{ +public: + explicit TestFunctor(int size) + : m_size(size) + {} + + Qt3D::QGeometry *operator ()() Q_DECL_FINAL + { + return Q_NULLPTR; + } + + bool operator ==(const Qt3D::QGeometryFunctor &other) const + { + const TestFunctor *otherFunctor = functor_cast<TestFunctor>(&other); + if (otherFunctor != Q_NULLPTR) + return otherFunctor->m_size == m_size; + return false; + } + + QT3D_FUNCTOR(TestFunctor) + +private: + int m_size; +}; + // We need to call QNode::clone which is protected // So we sublcass QNode instead of QObject class tst_QGeometryRenderer: public Qt3D::QNode @@ -150,6 +177,7 @@ private Q_SLOTS: geometry1->setPrimitiveRestart(false); geometry1->setPrimitiveType(Qt3D::QGeometryRenderer::Triangles); geometry1->setPrimitiveCount(15); + geometry1->setGeometryFunctor(Qt3D::QGeometryFunctorPtr(new TestFunctor(383))); QTest::newRow("triangle") << geometry1; Qt3D::QGeometryRenderer *geometry2 = new Qt3D::QGeometryRenderer(); @@ -161,6 +189,7 @@ private Q_SLOTS: geometry1->setPrimitiveCount(2056); geometry2->setPrimitiveRestart(true); geometry2->setPrimitiveType(Qt3D::QGeometryRenderer::Lines); + geometry2->setGeometryFunctor(Qt3D::QGeometryFunctorPtr(new TestFunctor(305))); QTest::newRow("lines with restart") << geometry2; } @@ -188,6 +217,12 @@ private Q_SLOTS: QVERIFY(clone->geometry() != Q_NULLPTR); QCOMPARE(clone->geometry()->id(), geometryRenderer->geometry()->id()); } + + QCOMPARE(clone->geometryFunctor(), geometryRenderer->geometryFunctor()); + if (geometryRenderer->geometryFunctor()) { + QVERIFY(clone->geometryFunctor()); + QVERIFY(*clone->geometryFunctor() == *geometryRenderer->geometryFunctor()); + } } void checkPropertyUpdates() @@ -288,6 +323,20 @@ private Q_SLOTS: arbiter.events.clear(); // WHEN + Qt3D::QGeometryFunctorPtr functor(new TestFunctor(555)); + geometryRenderer->setGeometryFunctor(functor); + QCoreApplication::processEvents(); + + // THEN + QCOMPARE(arbiter.events.size(), 1); + change = arbiter.events.first().staticCast<Qt3D::QScenePropertyChange>(); + QCOMPARE(change->propertyName(), "geometryFunctor"); + QCOMPARE(change->value().value<Qt3D::QGeometryFunctorPtr>(), functor); + QCOMPARE(change->type(), Qt3D::NodeUpdated); + + arbiter.events.clear(); + + // WHEN Qt3D::QGeometry geom; geometryRenderer->setGeometry(&geom); QCoreApplication::processEvents(); |