diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2016-08-11 11:54:46 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2016-08-23 06:29:01 +0000 |
commit | b9c90bb81a9474ec05565be866c403f2a3a26f2f (patch) | |
tree | 8bc8ee932f547fb1d7cd0a8b6e5b898cd1cd6180 /tests | |
parent | 0f2dbaf025513ce906fc08b5153dea15142ff35a (diff) |
QSceneLoader: status is updated from the backend
Change-Id: I52159b0fa78ab915e73c2dc84bda9bccc3dbd0ef
Task-number: QTBUG-54889
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/render/qsceneloader/tst_qsceneloader.cpp | 68 |
1 files changed, 67 insertions, 1 deletions
diff --git a/tests/auto/render/qsceneloader/tst_qsceneloader.cpp b/tests/auto/render/qsceneloader/tst_qsceneloader.cpp index 1d434f5d3..dd3babb06 100644 --- a/tests/auto/render/qsceneloader/tst_qsceneloader.cpp +++ b/tests/auto/render/qsceneloader/tst_qsceneloader.cpp @@ -27,12 +27,15 @@ ****************************************************************************/ #include <QtTest/QTest> +#include <Qt3DCore/qentity.h> #include <Qt3DCore/private/qnode_p.h> #include <Qt3DCore/private/qscene_p.h> #include <Qt3DCore/private/qnodecreatedchangegenerator_p.h> +#include <Qt3DCore/QPropertyUpdatedChange> #include <Qt3DRender/qsceneloader.h> #include <Qt3DRender/private/qsceneloader_p.h> +#include <QSignalSpy> #include "testpostmanarbiter.h" @@ -42,6 +45,17 @@ class tst_QSceneLoader: public QObject private Q_SLOTS: + void checkInitialState() + { + // GIVEN + Qt3DRender::QSceneLoader sceneLoader; + + // THEN + QCOMPARE(sceneLoader.status(), Qt3DRender::QSceneLoader::None); + QVERIFY(sceneLoader.source().isEmpty()); + QVERIFY(static_cast<Qt3DRender::QSceneLoaderPrivate *>(Qt3DCore::QNodePrivate::get(&sceneLoader))->m_subTreeRoot == nullptr); + } + void checkCreationData() { // GIVEN @@ -98,7 +112,7 @@ private Q_SLOTS: } } - void checkPropertyUpdates() + void checkSourcePropertyUpdate() { // GIVEN TestArbiter arbiter; @@ -118,6 +132,58 @@ private Q_SLOTS: arbiter.events.clear(); } + + void checkStatusPropertyUpdate() + { + // GIVEN + qRegisterMetaType<Qt3DRender::QSceneLoader::Status>("Status"); + TestArbiter arbiter; + QScopedPointer<Qt3DRender::QSceneLoader> sceneLoader(new Qt3DRender::QSceneLoader()); + arbiter.setArbiterOnNode(sceneLoader.data()); + QSignalSpy spy(sceneLoader.data(), SIGNAL(statusChanged(Status))); + + + // WHEN + const Qt3DRender::QSceneLoader::Status newStatus = Qt3DRender::QSceneLoader::Ready; + sceneLoader->setStatus(newStatus); + + // THEN + QVERIFY(arbiter.events.empty()); + QCOMPARE(spy.count(), 1); + + spy.clear(); + } + + void checkPropertyChanges() + { + // GIVEN + Qt3DCore::QScene scene; + Qt3DCore::QEntity rootEntity; + QScopedPointer<Qt3DRender::QSceneLoader> sceneLoader(new Qt3DRender::QSceneLoader()); + Qt3DCore::QNodePrivate::get(&rootEntity)->setScene(&scene); + Qt3DCore::QNodePrivate::get(sceneLoader.data())->setScene(&scene); + rootEntity.addComponent(sceneLoader.data()); + + // WHEN + Qt3DCore::QEntity backendCreatedSubtree; + Qt3DCore::QPropertyUpdatedChangePtr valueChange(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId())); + valueChange->setPropertyName("scene"); + valueChange->setValue(QVariant::fromValue(&backendCreatedSubtree)); + sceneLoader->sceneChangeEvent(valueChange); + + // THEN + QCOMPARE(static_cast<Qt3DRender::QSceneLoaderPrivate *>(Qt3DCore::QNodePrivate::get(sceneLoader.data()))->m_subTreeRoot, &backendCreatedSubtree); + + // WHEN + const Qt3DRender::QSceneLoader::Status newStatus = Qt3DRender::QSceneLoader::Ready; + valueChange.reset(new Qt3DCore::QPropertyUpdatedChange(Qt3DCore::QNodeId())); + valueChange->setPropertyName("status"); + valueChange->setValue(QVariant::fromValue(newStatus)); + sceneLoader->sceneChangeEvent(valueChange); + + // THEN + QCOMPARE(sceneLoader->status(), newStatus); + } }; QTEST_MAIN(tst_QSceneLoader) |