summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2016-08-11 11:54:46 +0200
committerPaul Lemire <paul.lemire@kdab.com>2016-08-23 06:29:01 +0000
commitb9c90bb81a9474ec05565be866c403f2a3a26f2f (patch)
tree8bc8ee932f547fb1d7cd0a8b6e5b898cd1cd6180 /tests
parent0f2dbaf025513ce906fc08b5153dea15142ff35a (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.cpp68
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)