diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-07-03 17:08:08 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2015-07-12 19:14:00 +0000 |
commit | 2b3f68d588c15830ebbacf55823b2af049d76b47 (patch) | |
tree | d4bbc39f0c19226f0adc67c4ad2131a4e460c170 /tests | |
parent | 6fcaef11f89994cfc9f117a07cb64b0e8959da2c (diff) |
QChangeArbiter/QPostMan: batch frontend changes
- Updated unit tests
- Added QAbstractPostman and QAbstractArbiter as they are more than
QObserverInterfaces but still need to be easily testable.
Change-Id: I0fc2ce48031eecc9bf893798650ef68e9d7d8bb7
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/core/nodes/tst_nodes.cpp | 33 | ||||
-rw-r--r-- | tests/auto/core/qchangearbiter/tst_qchangearbiter.cpp | 201 |
2 files changed, 165 insertions, 69 deletions
diff --git a/tests/auto/core/nodes/tst_nodes.cpp b/tests/auto/core/nodes/tst_nodes.cpp index 66751f3cf..41ddcad43 100644 --- a/tests/auto/core/nodes/tst_nodes.cpp +++ b/tests/auto/core/nodes/tst_nodes.cpp @@ -40,6 +40,7 @@ #include <Qt3DCore/qcomponent.h> #include <Qt3DCore/private/qscene_p.h> #include <Qt3DCore/qscenepropertychange.h> +#include <private/qpostman_p.h> #include <Qt3DCore/private/qlockableobserverinterface_p.h> #include <Qt3DCore/private/qnode_p.h> @@ -82,7 +83,23 @@ private slots: void verifyCopy(); }; -class ObserverSpy : public Qt3D::QLockableObserverInterface +class ObserverSpy; +class SimplePostman : public Qt3D::QAbstractPostman +{ +public: + SimplePostman(ObserverSpy *spy) + : m_spy(spy) + {} + + void sceneChangeEvent(const Qt3D::QSceneChangePtr &) Q_DECL_FINAL {}; + void setScene(Qt3D::QScene *) Q_DECL_FINAL {}; + void notifyBackend(const Qt3D::QSceneChangePtr &change) Q_DECL_FINAL; + +private: + ObserverSpy *m_spy; +}; + +class ObserverSpy : public Qt3D::QAbstractArbiter { public: class ChangeRecord : public QPair<Qt3D::QSceneChangePtr, bool> @@ -98,8 +115,9 @@ public: }; ObserverSpy(Qt3D::QNode *node) - : Qt3D::QLockableObserverInterface() + : Qt3D::QAbstractArbiter() , m_node(node) + , m_postman(new SimplePostman(this)) { Qt3D::QNodePrivate::get(node)->setArbiter(this); } @@ -126,10 +144,21 @@ public: events << ChangeRecord(e, false); } + Qt3D::QAbstractPostman *postman() const Q_DECL_FINAL + { + return m_postman.data(); + } + QList<ChangeRecord> events; Qt3D::QNode *m_node; + QScopedPointer<SimplePostman> m_postman; }; +void SimplePostman::notifyBackend(const Qt3D::QSceneChangePtr &change) +{ + m_spy->sceneChangeEventWithLock(change); +} + class MyQNode : public Qt3D::QNode { Q_OBJECT diff --git a/tests/auto/core/qchangearbiter/tst_qchangearbiter.cpp b/tests/auto/core/qchangearbiter/tst_qchangearbiter.cpp index 242b24ae8..fd3d622cd 100644 --- a/tests/auto/core/qchangearbiter/tst_qchangearbiter.cpp +++ b/tests/auto/core/qchangearbiter/tst_qchangearbiter.cpp @@ -38,6 +38,7 @@ #include <Qt3DCore/private/qobserverinterface_p.h> #include <Qt3DCore/private/qobservableinterface_p.h> #include <Qt3DCore/private/qchangearbiter_p.h> +#include <Qt3DCore/private/qpostman_p.h> #include <Qt3DCore/qscenepropertychange.h> #include <Qt3DCore/qscenechange.h> #include <Qt3DCore/qbackendscenepropertychange.h> @@ -247,14 +248,14 @@ private: QWaitCondition m_waitingForReplyToBeSent; }; -class tst_PostManObserver : public Qt3D::QObserverInterface +class tst_PostManObserver : public Qt3D::QAbstractPostman { public: tst_PostManObserver() : m_sceneInterface(Q_NULLPTR) {} - void setScene(Qt3D::QScene *scene) + void setScene(Qt3D::QScene *scene) Q_DECL_FINAL { m_sceneInterface = scene; } @@ -282,6 +283,11 @@ public: return m_lastChanges; } + void notifyBackend(const Qt3D::QSceneChangePtr &e) Q_DECL_FINAL + { + m_sceneInterface->arbiter()->sceneChangeEventWithLock(e); + } + private: Qt3D::QScene *m_sceneInterface; QList<Qt3D::QSceneChangePtr> m_lastChanges; @@ -321,17 +327,21 @@ private: void tst_QChangeArbiter::registerObservers() { - Qt3D::QChangeArbiter *arbiter = new Qt3D::QChangeArbiter(); - Qt3D::QScene *scene = new Qt3D::QScene(); - arbiter->setPostman(new tst_PostManObserver()); - arbiter->setScene(scene); - scene->setArbiter(arbiter); + // GIVEN + QScopedPointer<Qt3D::QChangeArbiter> arbiter(new Qt3D::QChangeArbiter()); + QScopedPointer<Qt3D::QScene> scene(new Qt3D::QScene()); + QScopedPointer<Qt3D::QAbstractPostman> postman(new tst_PostManObserver); + arbiter->setPostman(postman.data()); + arbiter->setScene(scene.data()); + postman->setScene(scene.data()); + scene->setArbiter(arbiter.data()); // Replaces initialize as we have no JobManager in this case - Qt3D::QChangeArbiter::createThreadLocalChangeQueue(arbiter); + Qt3D::QChangeArbiter::createThreadLocalChangeQueue(arbiter.data()); + // WHEN Qt3D::QNode *root = new tst_Node(); Qt3D::QNode *child = new tst_Node(); - Qt3D::QNodePrivate::get(root)->setScene(scene); + Qt3D::QNodePrivate::get(root)->setScene(scene.data()); scene->addObservable(root); QList<tst_SimpleObserver *> observers; @@ -343,6 +353,7 @@ void tst_QChangeArbiter::registerObservers() arbiter->syncChanges(); + // THEN Q_FOREACH (tst_SimpleObserver *o, observers) QVERIFY(o->lastChange().isNull()); @@ -353,22 +364,26 @@ void tst_QChangeArbiter::registerObservers() QVERIFY(o->lastChange()->type() == Qt3D::NodeCreated); } - Qt3D::QChangeArbiter::destroyThreadLocalChangeQueue(arbiter); + Qt3D::QChangeArbiter::destroyThreadLocalChangeQueue(arbiter.data()); } void tst_QChangeArbiter::registerSceneObserver() { - Qt3D::QChangeArbiter *arbiter = new Qt3D::QChangeArbiter(); - Qt3D::QScene *scene = new Qt3D::QScene(); - arbiter->setPostman(new tst_PostManObserver()); - arbiter->setScene(scene); - scene->setArbiter(arbiter); - // Replace initialize as we have no JobManager in this case - Qt3D::QChangeArbiter::createThreadLocalChangeQueue(arbiter); + // GIVEN + QScopedPointer<Qt3D::QChangeArbiter> arbiter(new Qt3D::QChangeArbiter()); + QScopedPointer<Qt3D::QScene> scene(new Qt3D::QScene()); + QScopedPointer<Qt3D::QAbstractPostman> postman(new tst_PostManObserver); + arbiter->setPostman(postman.data()); + arbiter->setScene(scene.data()); + postman->setScene(scene.data()); + scene->setArbiter(arbiter.data()); + // Replaces initialize as we have no JobManager in this case + Qt3D::QChangeArbiter::createThreadLocalChangeQueue(arbiter.data()); + // WHEN tst_Node *root = new tst_Node(); Qt3D::QNode *child = new tst_Node(); - Qt3D::QNodePrivate::get(root)->setScene(scene); + Qt3D::QNodePrivate::get(root)->setScene(scene.data()); scene->addObservable(root); QList<tst_SimpleObserver *> observers; @@ -387,14 +402,17 @@ void tst_QChangeArbiter::registerSceneObserver() arbiter->syncChanges(); + // THEN Q_FOREACH (tst_SimpleObserver *o, observers) QVERIFY(o->lastChange().isNull()); Q_FOREACH (tst_SceneObserver *s, sceneObservers) QVERIFY(s->lastChange().isNull()); + // WHEN child->setParent(root); - arbiter->syncChanges(); + + // THEN Q_FOREACH (tst_SimpleObserver *o, observers) { QVERIFY(!o->lastChange().isNull()); QVERIFY(o->lastChange()->type() == Qt3D::NodeCreated); @@ -404,9 +422,11 @@ void tst_QChangeArbiter::registerSceneObserver() QVERIFY(s->lastChange()->type() == Qt3D::NodeCreated); } + // WHEN root->sendComponentAddedNotification(); arbiter->syncChanges(); + // THEN Q_FOREACH (tst_SimpleObserver *o, observers) { QVERIFY(!o->lastChange().isNull()); QVERIFY(o->lastChange()->type() == Qt3D::ComponentAdded); @@ -416,22 +436,26 @@ void tst_QChangeArbiter::registerSceneObserver() QVERIFY(s->lastChange()->type() == Qt3D::NodeCreated); } - Qt3D::QChangeArbiter::destroyThreadLocalChangeQueue(arbiter); + Qt3D::QChangeArbiter::destroyThreadLocalChangeQueue(arbiter.data()); } void tst_QChangeArbiter::unregisterObservers() { - Qt3D::QChangeArbiter *arbiter = new Qt3D::QChangeArbiter(); - Qt3D::QScene *scene = new Qt3D::QScene(); - arbiter->setPostman(new tst_PostManObserver()); - arbiter->setScene(scene); - scene->setArbiter(arbiter); - // Replace initialize as we have no JobManager in this case - Qt3D::QChangeArbiter::createThreadLocalChangeQueue(arbiter); + // GIVEN + QScopedPointer<Qt3D::QChangeArbiter> arbiter(new Qt3D::QChangeArbiter()); + QScopedPointer<Qt3D::QScene> scene(new Qt3D::QScene()); + QScopedPointer<Qt3D::QAbstractPostman> postman(new tst_PostManObserver); + arbiter->setPostman(postman.data()); + arbiter->setScene(scene.data()); + postman->setScene(scene.data()); + scene->setArbiter(arbiter.data()); + // Replaces initialize as we have no JobManager in this case + Qt3D::QChangeArbiter::createThreadLocalChangeQueue(arbiter.data()); + // WHEN tst_Node *root = new tst_Node(); Qt3D::QNode *child = new tst_Node(); - Qt3D::QNodePrivate::get(root)->setScene(scene); + Qt3D::QNodePrivate::get(root)->setScene(scene.data()); scene->addObservable(root); QList<tst_SimpleObserver *> observers; @@ -443,44 +467,53 @@ void tst_QChangeArbiter::unregisterObservers() arbiter->syncChanges(); + // THEN Q_FOREACH (tst_SimpleObserver *o, observers) QVERIFY(o->lastChange().isNull()); + // WHEN child->setParent(root); - arbiter->syncChanges(); + + // THEN Q_FOREACH (tst_SimpleObserver *o, observers) { QVERIFY(!o->lastChange().isNull()); QVERIFY(o->lastChange()->type() == Qt3D::NodeCreated); } + // WHEN Q_FOREACH (tst_SimpleObserver *o, observers) arbiter->unregisterObserver(o, root->id()); root->sendAllChangesNotification(); arbiter->syncChanges(); + // THEN Q_FOREACH (tst_SimpleObserver *o, observers) { QVERIFY(!o->lastChange().isNull()); QVERIFY(o->lastChange()->type() == Qt3D::NodeCreated); } - Qt3D::QChangeArbiter::destroyThreadLocalChangeQueue(arbiter); + Qt3D::QChangeArbiter::destroyThreadLocalChangeQueue(arbiter.data()); } void tst_QChangeArbiter::unregisterSceneObservers() { - Qt3D::QChangeArbiter *arbiter = new Qt3D::QChangeArbiter(); - Qt3D::QScene *scene = new Qt3D::QScene(); - arbiter->setPostman(new tst_PostManObserver()); - arbiter->setScene(scene); - scene->setArbiter(arbiter); - // Replace initialize as we have no JobManager in this case - Qt3D::QChangeArbiter::createThreadLocalChangeQueue(arbiter); + // GIVEN + QScopedPointer<Qt3D::QChangeArbiter> arbiter(new Qt3D::QChangeArbiter()); + QScopedPointer<Qt3D::QScene> scene(new Qt3D::QScene()); + QScopedPointer<Qt3D::QAbstractPostman> postman(new tst_PostManObserver); + arbiter->setPostman(postman.data()); + arbiter->setScene(scene.data()); + postman->setScene(scene.data()); + scene->setArbiter(arbiter.data()); + // Replaces initialize as we have no JobManager in this case + Qt3D::QChangeArbiter::createThreadLocalChangeQueue(arbiter.data()); + // WHEN tst_Node *root = new tst_Node(); Qt3D::QNode *child = new tst_Node(); - Qt3D::QNodePrivate::get(root)->setScene(scene); + Qt3D::QNodePrivate::get(root)->setScene(scene.data()); scene->addObservable(root); QList<tst_SimpleObserver *> observers; @@ -499,14 +532,17 @@ void tst_QChangeArbiter::unregisterSceneObservers() arbiter->syncChanges(); + // THEN Q_FOREACH (tst_SimpleObserver *o, observers) QVERIFY(o->lastChange().isNull()); Q_FOREACH (tst_SceneObserver *s, sceneObservers) QVERIFY(s->lastChange().isNull()); + // WHEN child->setParent(root); - arbiter->syncChanges(); + + // THEN Q_FOREACH (tst_SimpleObserver *o, observers) { QVERIFY(!o->lastChange().isNull()); QVERIFY(o->lastChange()->type() == Qt3D::NodeCreated); @@ -516,9 +552,11 @@ void tst_QChangeArbiter::unregisterSceneObservers() QVERIFY(s->lastChange()->type() == Qt3D::NodeCreated); } + // WHEN root->sendComponentAddedNotification(); arbiter->syncChanges(); + // THEN Q_FOREACH (tst_SimpleObserver *o, observers) { QVERIFY(!o->lastChange().isNull()); QVERIFY(o->lastChange()->type() == Qt3D::ComponentAdded); @@ -528,9 +566,11 @@ void tst_QChangeArbiter::unregisterSceneObservers() QVERIFY(s->lastChange()->type() == Qt3D::NodeCreated); } + // WHEN child->setParent(Q_NODE_NULLPTR); arbiter->syncChanges(); + // THEN Q_FOREACH (tst_SimpleObserver *o, observers) { QVERIFY(!o->lastChange().isNull()); QVERIFY(o->lastChange()->type() == Qt3D::NodeAboutToBeDeleted); @@ -543,9 +583,11 @@ void tst_QChangeArbiter::unregisterSceneObservers() Q_FOREACH (tst_SceneObserver *s, sceneObservers) arbiter->unregisterSceneObserver(s); + // WHEN child->setParent(root); arbiter->syncChanges(); + // THEN Q_FOREACH (tst_SimpleObserver *o, observers) { QVERIFY(!o->lastChange().isNull()); QVERIFY(o->lastChange()->type() == Qt3D::NodeCreated); @@ -555,21 +597,25 @@ void tst_QChangeArbiter::unregisterSceneObservers() QVERIFY(s->lastChange()->type() == Qt3D::NodeAboutToBeDeleted); } - Qt3D::QChangeArbiter::destroyThreadLocalChangeQueue(arbiter); + Qt3D::QChangeArbiter::destroyThreadLocalChangeQueue(arbiter.data()); } void tst_QChangeArbiter::distributeFrontendChanges() { - Qt3D::QChangeArbiter *arbiter = new Qt3D::QChangeArbiter(); - Qt3D::QScene *scene = new Qt3D::QScene(); - arbiter->setPostman(new tst_PostManObserver()); - arbiter->setScene(scene); - scene->setArbiter(arbiter); - // Replace initialize as we have no JobManager in this case - Qt3D::QChangeArbiter::createThreadLocalChangeQueue(arbiter); + // GIVEN + QScopedPointer<Qt3D::QChangeArbiter> arbiter(new Qt3D::QChangeArbiter()); + QScopedPointer<Qt3D::QScene> scene(new Qt3D::QScene()); + QScopedPointer<Qt3D::QAbstractPostman> postman(new tst_PostManObserver); + arbiter->setPostman(postman.data()); + arbiter->setScene(scene.data()); + postman->setScene(scene.data()); + scene->setArbiter(arbiter.data()); + // Replaces initialize as we have no JobManager in this case + Qt3D::QChangeArbiter::createThreadLocalChangeQueue(arbiter.data()); + // WHEN tst_Node *root = new tst_Node(); - Qt3D::QNodePrivate::get(root)->setScene(scene); + Qt3D::QNodePrivate::get(root)->setScene(scene.data()); scene->addObservable(root); tst_SimpleObserver *backendAllChangedObserver = new tst_SimpleObserver(); @@ -588,6 +634,7 @@ void tst_QChangeArbiter::distributeFrontendChanges() arbiter->syncChanges(); + // THEN QVERIFY(backendAllChangedObserver->lastChange().isNull()); QVERIFY(backendNodeAddedObserver->lastChange().isNull()); QVERIFY(backendNodeUpdatedObserver->lastChange().isNull()); @@ -595,9 +642,11 @@ void tst_QChangeArbiter::distributeFrontendChanges() QVERIFY(backendComponentAddedObserver->lastChange().isNull()); QVERIFY(backendComponentRemovedObserver->lastChange().isNull()); + // WHEN root->sendNodeAddedNotification(); arbiter->syncChanges(); + // THEN QCOMPARE(backendAllChangedObserver->lastChanges().count(), 1); QCOMPARE(backendNodeAddedObserver->lastChanges().count(), 1); QCOMPARE(backendNodeUpdatedObserver->lastChanges().count(), 0); @@ -605,9 +654,11 @@ void tst_QChangeArbiter::distributeFrontendChanges() QCOMPARE(backendComponentAddedObserver->lastChanges().count(), 0); QCOMPARE(backendComponentRemovedObserver->lastChanges().count(), 0); + // WHEN root->sendNodeUpdatedNotification(); arbiter->syncChanges(); + // THEN QCOMPARE(backendAllChangedObserver->lastChanges().count(), 2); QCOMPARE(backendNodeAddedObserver->lastChanges().count(), 1); QCOMPARE(backendNodeUpdatedObserver->lastChanges().count(), 1); @@ -615,10 +666,11 @@ void tst_QChangeArbiter::distributeFrontendChanges() QCOMPARE(backendComponentAddedObserver->lastChanges().count(), 0); QCOMPARE(backendComponentRemovedObserver->lastChanges().count(), 0); - + // WHEN root->sendNodeRemovedNotification(); arbiter->syncChanges(); + // THEN QCOMPARE(backendAllChangedObserver->lastChanges().count(), 3); QCOMPARE(backendNodeAddedObserver->lastChanges().count(), 1); QCOMPARE(backendNodeUpdatedObserver->lastChanges().count(), 1); @@ -626,9 +678,11 @@ void tst_QChangeArbiter::distributeFrontendChanges() QCOMPARE(backendComponentAddedObserver->lastChanges().count(), 0); QCOMPARE(backendComponentRemovedObserver->lastChanges().count(), 0); + // WHEN root->sendComponentAddedNotification(); arbiter->syncChanges(); + // THEN QCOMPARE(backendAllChangedObserver->lastChanges().count(), 4); QCOMPARE(backendNodeAddedObserver->lastChanges().count(), 1); QCOMPARE(backendNodeUpdatedObserver->lastChanges().count(), 1); @@ -636,10 +690,11 @@ void tst_QChangeArbiter::distributeFrontendChanges() QCOMPARE(backendComponentAddedObserver->lastChanges().count(), 1); QCOMPARE(backendComponentRemovedObserver->lastChanges().count(), 0); - + // WHEN root->sendComponentRemovedNotification(); arbiter->syncChanges(); + // THEN QCOMPARE(backendAllChangedObserver->lastChanges().count(), 5); QCOMPARE(backendNodeAddedObserver->lastChanges().count(), 1); QCOMPARE(backendNodeUpdatedObserver->lastChanges().count(), 1); @@ -647,9 +702,11 @@ void tst_QChangeArbiter::distributeFrontendChanges() QCOMPARE(backendComponentAddedObserver->lastChanges().count(), 1); QCOMPARE(backendComponentRemovedObserver->lastChanges().count(), 1); + // WHEN root->sendAllChangesNotification(); arbiter->syncChanges(); + // THEN QCOMPARE(backendAllChangedObserver->lastChanges().count(), 6); QCOMPARE(backendNodeAddedObserver->lastChanges().count(), 2); QCOMPARE(backendNodeUpdatedObserver->lastChanges().count(), 2); @@ -657,51 +714,60 @@ void tst_QChangeArbiter::distributeFrontendChanges() QCOMPARE(backendComponentAddedObserver->lastChanges().count(), 2); QCOMPARE(backendComponentRemovedObserver->lastChanges().count(), 2); - Qt3D::QChangeArbiter::destroyThreadLocalChangeQueue(arbiter); + Qt3D::QChangeArbiter::destroyThreadLocalChangeQueue(arbiter.data()); } void tst_QChangeArbiter::distributeBackendChanges() { - Qt3D::QChangeArbiter *arbiter = new Qt3D::QChangeArbiter(); - Qt3D::QScene *scene = new Qt3D::QScene(); - tst_PostManObserver *postMan = new tst_PostManObserver(); + + // GIVEN + QScopedPointer<Qt3D::QChangeArbiter> arbiter(new Qt3D::QChangeArbiter()); + QScopedPointer<Qt3D::QScene> scene(new Qt3D::QScene()); + QScopedPointer<tst_PostManObserver> postman(new tst_PostManObserver); + arbiter->setPostman(postman.data()); + arbiter->setScene(scene.data()); + postman->setScene(scene.data()); + scene->setArbiter(arbiter.data()); + // Replaces initialize as we have no JobManager in this case + Qt3D::QChangeArbiter::createThreadLocalChangeQueue(arbiter.data()); + // In order for backend -> frontend changes to work properly, // the backend notification should only be sent // from a worker thread which has a dedicated ChangeQueue in the // ChangeArbiter different than the frontend ChangeQueue. In this // test we will only check that the backend has received the frontend notification - arbiter->setPostman(postMan); - arbiter->setScene(scene); - scene->setArbiter(arbiter); - postMan->setScene(scene); - // Replace initialize as we have no JobManager in this case - Qt3D::QChangeArbiter::createThreadLocalChangeQueue(arbiter); + // WHEN tst_Node *root = new tst_Node(); - Qt3D::QNodePrivate::get(root)->setScene(scene); + Qt3D::QNodePrivate::get(root)->setScene(scene.data()); scene->addObservable(root); tst_BackendObserverObservable *backenObserverObservable = new tst_BackendObserverObservable(); arbiter->registerObserver(Qt3D::QBackendNodePrivate::get(backenObserverObservable), root->id()); arbiter->scene()->addObservable(Qt3D::QBackendNodePrivate::get(backenObserverObservable), root->id()); - Qt3D::QBackendNodePrivate::get(backenObserverObservable)->setArbiter(arbiter); + Qt3D::QBackendNodePrivate::get(backenObserverObservable)->setArbiter(arbiter.data()); arbiter->syncChanges(); + + // THEN QVERIFY(root->lastChange().isNull()); QVERIFY(backenObserverObservable->lastChange().isNull()); QCOMPARE(backenObserverObservable->lastChanges().count(), 0); + // WHEN root->sendAllChangesNotification(); arbiter->syncChanges(); + // THEN // backend observer receives event from frontend node "root" QCOMPARE(root->lastChanges().count(), 0); - QCOMPARE(postMan->lastChanges().count(), 0); + QCOMPARE(postman->lastChanges().count(), 0); QCOMPARE(backenObserverObservable->lastChanges().count(), 1); + // WHEN // simulate a worker thread - QScopedPointer<ThreadedAnswer> answer(new ThreadedAnswer(arbiter, backenObserverObservable)); + QScopedPointer<ThreadedAnswer> answer(new ThreadedAnswer(arbiter.data(), backenObserverObservable)); QMutex mutex; // sends reply from another thread (simulates job thread) @@ -713,13 +779,14 @@ void tst_QChangeArbiter::distributeBackendChanges() // To verify that backendObserver sent a reply arbiter->syncChanges(); + // THEN // the repliers should receive it's reply QCOMPARE(backenObserverObservable->lastChanges().count(), 2); // verify that postMan has received the change - QCOMPARE(postMan->lastChanges().count(), 1); + QCOMPARE(postman->lastChanges().count(), 1); // verify correctness of the reply - Qt3D::QBackendScenePropertyChangePtr c = qSharedPointerDynamicCast<Qt3D::QBackendScenePropertyChange>(postMan->lastChange()); + Qt3D::QBackendScenePropertyChangePtr c = qSharedPointerDynamicCast<Qt3D::QBackendScenePropertyChange>(postman->lastChange()); QVERIFY(!c.isNull()); QVERIFY(c->targetNode() == root->id()); qDebug() << c->propertyName(); @@ -728,7 +795,7 @@ void tst_QChangeArbiter::distributeBackendChanges() answer->exit(); answer->wait(); - Qt3D::QChangeArbiter::destroyThreadLocalChangeQueue(arbiter); + Qt3D::QChangeArbiter::destroyThreadLocalChangeQueue(arbiter.data()); } QTEST_GUILESS_MAIN(tst_QChangeArbiter) |