summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2015-08-06 15:24:00 +0200
committerPaul Lemire <paul.lemire@kdab.com>2015-08-07 16:50:31 +0000
commit43d49a9d24dfdc08e660ac2b4a1eb7b8ac51f33f (patch)
tree5705dd4cc1c59c99d446fdc5fe353e629312edd3 /tests
parentcb6fddc83aaf7b07ed93b253af9aecdf0de46109 (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.cpp49
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();