summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorSvenn-Arne Dragly <svenn-arne.dragly@qt.io>2018-07-05 13:06:24 +0200
committerSvenn-Arne Dragly <svenn-arne.dragly@qt.io>2018-08-26 09:15:00 +0000
commit77e418fde850c86e39d9dd8528876599fbe9dc34 (patch)
treec637a5ddc7452c235fde5a820a36cc3847fe92b2 /tests
parent026545cb39dcd452757e7b785ae688ca201c7a92 (diff)
Add private API to access child nodes of QEntity and QFrameGraphNode
This opens up for reduced bookeeping on the backend, and is used by the experimental Dragon render aspect, which is currently being implemented in qt3d-runtime. Change-Id: I4cc2e98e4e0e7e8d456ed11c4fbc48db5c93f2a2 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/core/qentity/tst_qentity.cpp46
-rw-r--r--tests/auto/render/qframegraphnode/tst_qframegraphnode.cpp47
2 files changed, 77 insertions, 16 deletions
diff --git a/tests/auto/core/qentity/tst_qentity.cpp b/tests/auto/core/qentity/tst_qentity.cpp
index efebb26ef..e27cd1fc9 100644
--- a/tests/auto/core/qentity/tst_qentity.cpp
+++ b/tests/auto/core/qentity/tst_qentity.cpp
@@ -556,30 +556,55 @@ void tst_Entity::removeSeveralTimesSameComponent()
void tst_Entity::checkCloning_data()
{
QTest::addColumn<Qt3DCore::QEntity *>("entity");
+ QTest::addColumn<QVector<QNodeId>>("childEntityIds");
+ QTest::addColumn<int>("creationChangeCount");
- QTest::newRow("defaultConstructed") << new MyEntity();
+ {
+ QTest::newRow("defaultConstructed") << new MyEntity() << QVector<QNodeId>() << 1;
+ }
+
+ {
+ Qt3DCore::QEntity *entityWithComponents = new MyEntity();
+ Qt3DCore::QComponent *component1 = new MyQComponent();
+ Qt3DCore::QComponent *component2 = new MyQComponent();
+ Qt3DCore::QComponent *component3 = new MyQComponent();
+ entityWithComponents->addComponent(component1);
+ entityWithComponents->addComponent(component2);
+ entityWithComponents->addComponent(component3);
+ QTest::newRow("entityWithComponents") << entityWithComponents << QVector<QNodeId>() << 4;
+ }
- Qt3DCore::QEntity *entityWithComponents = new MyEntity();
- Qt3DCore::QComponent *component1 = new MyQComponent();
- Qt3DCore::QComponent *component2 = new MyQComponent();
- Qt3DCore::QComponent *component3 = new MyQComponent();
- entityWithComponents->addComponent(component1);
- entityWithComponents->addComponent(component2);
- entityWithComponents->addComponent(component3);
- QTest::newRow("entityWithComponents") << entityWithComponents;
+ {
+ Qt3DCore::QEntity *entityWithChildren = new MyEntity();
+ Qt3DCore::QEntity *child1 = new MyEntity(entityWithChildren);
+ Qt3DCore::QEntity *child2 = new MyEntity(entityWithChildren);
+ QVector<QNodeId> childIds = {child1->id(), child2->id()};
+ QTest::newRow("entityWithChildren") << entityWithChildren << childIds << 3;
+ }
+
+ {
+ Qt3DCore::QEntity *entityWithNestedChildren = new MyEntity();
+ Qt3DCore::QEntity *child = new MyEntity(entityWithNestedChildren);
+ Qt3DCore::QNode *dummy = new Qt3DCore::QNode(entityWithNestedChildren);
+ Qt3DCore::QEntity *grandChild = new MyEntity(entityWithNestedChildren);
+ QVector<QNodeId> childIds = {child->id(), grandChild->id()};
+ QTest::newRow("entityWithNestedChildren") << entityWithNestedChildren << childIds << 4;
+ }
}
void tst_Entity::checkCloning()
{
// GIVEN
QFETCH(Qt3DCore::QEntity *, entity);
+ QFETCH(QVector<QNodeId>, childEntityIds);
+ QFETCH(int, creationChangeCount);
// WHEN
Qt3DCore::QNodeCreatedChangeGenerator creationChangeGenerator(entity);
QVector<Qt3DCore::QNodeCreatedChangeBasePtr> creationChanges = creationChangeGenerator.creationChanges();
// THEN
- QCOMPARE(creationChanges.size(), 1 + entity->components().size());
+ QCOMPARE(creationChanges.size(), creationChangeCount);
const Qt3DCore::QNodeCreatedChangePtr<Qt3DCore::QEntityData> creationChangeData =
qSharedPointerCast<Qt3DCore::QNodeCreatedChange<Qt3DCore::QEntityData>>(creationChanges.first());
@@ -591,6 +616,7 @@ void tst_Entity::checkCloning()
QCOMPARE(creationChangeData->metaObject(), entity->metaObject());
QCOMPARE(creationChangeData->parentId(), entity->parentNode() ? entity->parentNode()->id() : Qt3DCore::QNodeId());
QCOMPARE(cloneData.parentEntityId, entity->parentEntity() ? entity->parentEntity()->id() : Qt3DCore::QNodeId());
+ QCOMPARE(cloneData.childEntityIds, childEntityIds);
QCOMPARE(cloneData.componentIdsAndTypes.size(), entity->components().size());
const QVector<Qt3DCore::QComponent *> &components = entity->components();
diff --git a/tests/auto/render/qframegraphnode/tst_qframegraphnode.cpp b/tests/auto/render/qframegraphnode/tst_qframegraphnode.cpp
index b06da033c..1e19d8609 100644
--- a/tests/auto/render/qframegraphnode/tst_qframegraphnode.cpp
+++ b/tests/auto/render/qframegraphnode/tst_qframegraphnode.cpp
@@ -35,6 +35,8 @@
#include <Qt3DRender/qframegraphnode.h>
#include <Qt3DRender/private/qframegraphnode_p.h>
#include <Qt3DRender/qframegraphnodecreatedchange.h>
+#include <Qt3DRender/private/qframegraphnodecreatedchange_p.h>
+
#include "testpostmanarbiter.h"
class MyFrameGraphNode : public Qt3DRender::QFrameGraphNode
@@ -64,21 +66,48 @@ private Q_SLOTS:
void checkCloning_data()
{
QTest::addColumn<Qt3DRender::QFrameGraphNode *>("frameGraphNode");
+ QTest::addColumn<QVector<Qt3DCore::QNodeId>>("childFrameGraphNodeIds");
QTest::addColumn<bool>("enabled");
+ QTest::addColumn<int>("creationChangeCount");
+
+ QVector<Qt3DCore::QNodeId> noChildIds;
+
+ {
+ Qt3DRender::QFrameGraphNode *defaultConstructed = new MyFrameGraphNode();
+ QTest::newRow("defaultConstructed") << defaultConstructed << noChildIds << true << 1;
+ }
+
+ {
+ Qt3DRender::QFrameGraphNode *disabledFrameGraphNode = new MyFrameGraphNode();
+ disabledFrameGraphNode->setEnabled(false);
+ QTest::newRow("allBuffers") << disabledFrameGraphNode << noChildIds << false << 1;
+ }
- Qt3DRender::QFrameGraphNode *defaultConstructed = new MyFrameGraphNode();
- QTest::newRow("defaultConstructed") << defaultConstructed << true;
+ {
+ Qt3DRender::QFrameGraphNode *nodeWithChildren = new MyFrameGraphNode();
+ Qt3DRender::QFrameGraphNode *child1 = new MyFrameGraphNode(nodeWithChildren);
+ Qt3DRender::QFrameGraphNode *child2 = new MyFrameGraphNode(nodeWithChildren);
+ QVector<Qt3DCore::QNodeId> childIds = {child1->id(), child2->id()};
+ QTest::newRow("nodeWithChildren") << nodeWithChildren << childIds << true << 3;
+ }
- Qt3DRender::QFrameGraphNode *disabledFrameGraphNode = new MyFrameGraphNode();
- disabledFrameGraphNode->setEnabled(false);
- QTest::newRow("allBuffers") << disabledFrameGraphNode << false;
+ {
+ Qt3DRender::QFrameGraphNode *nodeWithNestedChildren = new MyFrameGraphNode();
+ Qt3DRender::QFrameGraphNode *child = new MyFrameGraphNode(nodeWithNestedChildren);
+ Qt3DCore::QNode *dummy = new Qt3DCore::QNode(nodeWithNestedChildren);
+ Qt3DRender::QFrameGraphNode *grandChild = new MyFrameGraphNode(nodeWithNestedChildren);
+ QVector<Qt3DCore::QNodeId> childIds = {child->id(), grandChild->id()};
+ QTest::newRow("nodeWithNestedChildren") << nodeWithNestedChildren << childIds << true << 4;
+ }
}
void checkCloning()
{
// GIVEN
QFETCH(Qt3DRender::QFrameGraphNode *, frameGraphNode);
+ QFETCH(QVector<Qt3DCore::QNodeId>, childFrameGraphNodeIds);
QFETCH(bool, enabled);
+ QFETCH(int, creationChangeCount);
// THEN
QCOMPARE(frameGraphNode->isEnabled(), enabled);
@@ -88,7 +117,7 @@ private Q_SLOTS:
QVector<Qt3DCore::QNodeCreatedChangeBasePtr> creationChanges = creationChangeGenerator.creationChanges();
// THEN
- QCOMPARE(creationChanges.size(), 1);
+ QCOMPARE(creationChanges.size(), creationChangeCount);
const Qt3DCore::QNodeCreatedChangeBasePtr creationChangeData = creationChanges.first();
// THEN
@@ -96,6 +125,12 @@ private Q_SLOTS:
QCOMPARE(frameGraphNode->isEnabled(), creationChangeData->isNodeEnabled());
QCOMPARE(frameGraphNode->metaObject(), creationChangeData->metaObject());
+ // THEN
+ Qt3DRender::QFrameGraphNodeCreatedChangeBasePtr frameGraphNodeCreatedChange = qSharedPointerCast<Qt3DRender::QFrameGraphNodeCreatedChangeBase>(creationChangeData);
+ Qt3DRender::QFrameGraphNodeCreatedChangeBasePrivate *creationChangeDataPrivate = Qt3DRender::QFrameGraphNodeCreatedChangeBasePrivate::get(frameGraphNodeCreatedChange.get());
+ QCOMPARE(creationChangeDataPrivate->m_parentFrameGraphNodeId, frameGraphNode->parentNode() ? frameGraphNode->parentNode()->id() : Qt3DCore::QNodeId());
+ QCOMPARE(creationChangeDataPrivate->m_childFrameGraphNodeIds, childFrameGraphNodeIds);
+
delete frameGraphNode;
}