diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-08-06 11:52:27 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2015-08-07 14:32:06 +0000 |
commit | af22d66fcfbb80f1cc4e42948aca29613443f44a (patch) | |
tree | 7093de893e8466155fbde69311a1cc42ea960cd4 /tests/auto/render/qbuffer/tst_qbuffer.cpp | |
parent | 8e6652961adffb888602774c679ee756737a8b40 (diff) |
Update RenderBuffer/QBuffer unit tests
Change-Id: Iadb91977da8927544bd3b90ee512128367d70b84
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests/auto/render/qbuffer/tst_qbuffer.cpp')
-rw-r--r-- | tests/auto/render/qbuffer/tst_qbuffer.cpp | 50 |
1 files changed, 48 insertions, 2 deletions
diff --git a/tests/auto/render/qbuffer/tst_qbuffer.cpp b/tests/auto/render/qbuffer/tst_qbuffer.cpp index 3b8a67c63..6ebe841ea 100644 --- a/tests/auto/render/qbuffer/tst_qbuffer.cpp +++ b/tests/auto/render/qbuffer/tst_qbuffer.cpp @@ -42,6 +42,7 @@ #include <Qt3DCore/QScenePropertyChange> #include <Qt3DRenderer/qbuffer.h> +#include <Qt3DRenderer/qbufferfunctor.h> class TestArbiter; @@ -118,6 +119,32 @@ void TestPostman::notifyBackend(const Qt3D::QSceneChangePtr &e) m_arbiter->sceneChangeEventWithLock(e); } +class TestFunctor : public Qt3D::QBufferFunctor +{ +public: + explicit TestFunctor(int size) + : m_size(size) + {} + + QByteArray operator ()() Q_DECL_FINAL + { + return QByteArray(); + } + + bool operator ==(const Qt3D::QBufferFunctor &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_QBuffer: public Qt3D::QNode @@ -141,11 +168,13 @@ private Q_SLOTS: Qt3D::QBuffer *buffer = new Qt3D::QBuffer(Qt3D::QBuffer::VertexBuffer); buffer->setUsage(Qt3D::QBuffer::DynamicRead); buffer->setData(QByteArrayLiteral("There's no replacement")); + buffer->setBufferFunctor(Qt3D::QBufferFunctorPtr(new TestFunctor(883))); QTest::newRow("vertex") << buffer; Qt3D::QBuffer *indexBuffer = new Qt3D::QBuffer(Qt3D::QBuffer::IndexBuffer); - buffer->setUsage(Qt3D::QBuffer::StaticCopy); - buffer->setData(QByteArrayLiteral("For displacement")); + indexBuffer->setUsage(Qt3D::QBuffer::StaticCopy); + indexBuffer->setData(QByteArrayLiteral("For displacement")); + indexBuffer->setBufferFunctor(Qt3D::QBufferFunctorPtr(new TestFunctor(1340))); QTest::newRow("index") << indexBuffer; } @@ -165,6 +194,10 @@ private Q_SLOTS: QCOMPARE(buffer->usage(), clone->usage()); QCOMPARE(buffer->type(), clone->type()); QCOMPARE(buffer->bufferFunctor(), clone->bufferFunctor()); + if (buffer->bufferFunctor()) { + QVERIFY(clone->bufferFunctor()); + QVERIFY(*clone->bufferFunctor() == *buffer->bufferFunctor()); + } } void checkPropertyUpdates() @@ -208,6 +241,19 @@ private Q_SLOTS: QCOMPARE(change->value().value<QByteArray>(), QByteArrayLiteral("Z28")); arbiter.events.clear(); + + // WHEN + Qt3D::QBufferFunctorPtr functor(new TestFunctor(355)); + buffer->setBufferFunctor(functor); + QCoreApplication::processEvents(); + + // THEN + QCOMPARE(arbiter.events.size(), 1); + change = arbiter.events.first().staticCast<Qt3D::QScenePropertyChange>(); + QCOMPARE(change->propertyName(), "bufferFunctor"); + QCOMPARE(change->value().value<Qt3D::QBufferFunctorPtr>(), functor); + + arbiter.events.clear(); } protected: |