summaryrefslogtreecommitdiffstats
path: root/tests/auto/core/qscene/tst_qscene.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/core/qscene/tst_qscene.cpp')
-rw-r--r--tests/auto/core/qscene/tst_qscene.cpp144
1 files changed, 107 insertions, 37 deletions
diff --git a/tests/auto/core/qscene/tst_qscene.cpp b/tests/auto/core/qscene/tst_qscene.cpp
index 9ee4d126e..78f17e8fa 100644
--- a/tests/auto/core/qscene/tst_qscene.cpp
+++ b/tests/auto/core/qscene/tst_qscene.cpp
@@ -48,6 +48,7 @@ private slots:
void removeObservable();
void removeNodeObservable();
void addChildNode();
+ void deleteChildNode();
void removeChildNode();
void addEntityForComponent();
void removeEntityForComponent();
@@ -285,6 +286,71 @@ void tst_QScene::addChildNode()
}
}
+void tst_QScene::deleteChildNode()
+{
+ // GIVEN
+ Qt3DCore::QScene *scene = new Qt3DCore::QScene;
+
+ QList<Qt3DCore::QNode *> nodes1, nodes2;
+
+ Qt3DCore::QNode *root1 = new tst_Node();
+ Qt3DCore::QNode *root2 = new tst_Node();
+ Qt3DCore::QNodePrivate::get(root1)->setScene(scene);
+ Qt3DCore::QNodePrivate::get(root2)->setScene(scene);
+ Qt3DCore::QNodePrivate::get(root1)->m_hasBackendNode = true;
+ Qt3DCore::QNodePrivate::get(root2)->m_hasBackendNode = true;
+
+ // WHEN
+ scene->addObservable(root1);
+ scene->addObservable(root2);
+ // THEN
+ QVERIFY(scene->lookupNode(root1->id()) == root1);
+ QVERIFY(scene->lookupNode(root2->id()) == root2);
+
+ // WHEN
+ for (int i = 0; i < 10; i++) {
+ Qt3DCore::QNode *child1 = new tst_Node();
+ child1->setParent(nodes1.isEmpty() ? root1 : nodes1.last());
+ nodes1.append(child1);
+
+ Qt3DCore::QNode *child2 = new tst_Node();
+ child2->setParent(nodes2.isEmpty() ? root2 : nodes2.last());
+ nodes2.append(child2);
+ }
+ QCoreApplication::processEvents();
+
+ // THEN
+ for (Qt3DCore::QNode *n : qAsConst(nodes1)) {
+ QVERIFY(scene->lookupNode(n->id()) == n);
+ }
+ for (Qt3DCore::QNode *n : qAsConst(nodes2)) {
+ QVERIFY(scene->lookupNode(n->id()) == n);
+ }
+
+ // gather node IDs
+ Qt3DCore::QNodeIdVector root1ChildIds;
+ for (Qt3DCore::QNode *n : qAsConst(nodes1))
+ root1ChildIds << n->id();
+
+ // WHEN
+ delete root1;
+ QCoreApplication::processEvents();
+
+ // THEN
+ for (Qt3DCore::QNodeId id : qAsConst(root1ChildIds)) {
+ QVERIFY(scene->lookupNode(id) == nullptr);
+ }
+
+ // WHEN
+ nodes2.first()->setParent(static_cast<Qt3DCore::QNode*>(nullptr));
+ QCoreApplication::processEvents();
+
+ // THEN
+ for (Qt3DCore::QNode *n : qAsConst(nodes2)) {
+ QVERIFY(scene->lookupNode(n->id()) == nullptr);
+ }
+}
+
void tst_QScene::removeChildNode()
{
// GIVEN
@@ -294,6 +360,7 @@ void tst_QScene::removeChildNode()
Qt3DCore::QNode *root = new tst_Node;
Qt3DCore::QNodePrivate::get(root)->setScene(scene);
+ Qt3DCore::QNodePrivate::get(root)->m_hasBackendNode = true;
scene->addObservable(root);
// WHEN
@@ -423,36 +490,37 @@ void tst_QScene::setPropertyTrackData()
// GIVEN
Qt3DCore::QNodeId fakeNodeId = Qt3DCore::QNodeId::createId();
QScopedPointer<Qt3DCore::QScene> scene(new Qt3DCore::QScene);
- const QStringList propertyNamesList = QStringList() << QStringLiteral("1340");
+ QHash<QString, Qt3DCore::QNode::PropertyTrackingMode> overridenTrackedProperties;
+ overridenTrackedProperties.insert(QStringLiteral("1340"), Qt3DCore::QNode::TrackAllValues);
// WHEN
{
Qt3DCore::QScene::NodePropertyTrackData trackData;
- trackData.namedProperties = propertyNamesList;
- trackData.updateMode = Qt3DCore::QNode::TrackNamedPropertiesMode;
+ trackData.trackedPropertiesOverrides = overridenTrackedProperties;
+ trackData.defaultTrackMode = Qt3DCore::QNode::DontTrackValues;
scene->setPropertyTrackDataForNode(fakeNodeId, trackData);
}
// THEN
{
Qt3DCore::QScene::NodePropertyTrackData trackData = scene->lookupNodePropertyTrackData(fakeNodeId);
- QCOMPARE(trackData.namedProperties, propertyNamesList);
- QCOMPARE(trackData.updateMode, Qt3DCore::QNode::TrackNamedPropertiesMode);
+ QCOMPARE(trackData.trackedPropertiesOverrides, overridenTrackedProperties);
+ QCOMPARE(trackData.defaultTrackMode, Qt3DCore::QNode::DontTrackValues);
}
// WHEN
{
Qt3DCore::QScene::NodePropertyTrackData trackData;
- trackData.namedProperties = propertyNamesList;
- trackData.updateMode = Qt3DCore::QNode::DefaultTrackMode;
+ trackData.trackedPropertiesOverrides.clear();
+ trackData.defaultTrackMode = Qt3DCore::QNode::TrackFinalValues;
scene->setPropertyTrackDataForNode(fakeNodeId, trackData);
}
// THEN
{
Qt3DCore::QScene::NodePropertyTrackData trackData = scene->lookupNodePropertyTrackData(fakeNodeId);
- QCOMPARE(trackData.namedProperties, propertyNamesList);
- QCOMPARE(trackData.updateMode, Qt3DCore::QNode::DefaultTrackMode);
+ QCOMPARE(trackData.trackedPropertiesOverrides.size(), 0);
+ QCOMPARE(trackData.defaultTrackMode, Qt3DCore::QNode::TrackFinalValues);
}
}
@@ -461,21 +529,20 @@ void tst_QScene::lookupNodePropertyTrackData()
// GIVEN
QScopedPointer<Qt3DCore::QScene> scene(new Qt3DCore::QScene);
Qt3DCore::QNodeId fakeNodeId = Qt3DCore::QNodeId::createId();
- const QStringList propertyNamesList = QStringList() << QStringLiteral("383");
// THEN -> default value for non existent id
Qt3DCore::QScene::NodePropertyTrackData trackData = scene->lookupNodePropertyTrackData(fakeNodeId);
- QCOMPARE(trackData.namedProperties, QStringList());
- QCOMPARE(trackData.updateMode, Qt3DCore::QNode::DefaultTrackMode);
+ QCOMPARE(trackData.trackedPropertiesOverrides.size(), 0);
+ QCOMPARE(trackData.defaultTrackMode, Qt3DCore::QNode::TrackFinalValues);
// WHEN
- trackData.namedProperties = propertyNamesList;
- trackData.updateMode = Qt3DCore::QNode::TrackNamedPropertiesMode;
+ trackData.trackedPropertiesOverrides.insert(QStringLiteral("383"), Qt3DCore::QNode::TrackAllValues);
+ trackData.defaultTrackMode = Qt3DCore::QNode::DontTrackValues;
scene->setPropertyTrackDataForNode(fakeNodeId, trackData);
trackData = scene->lookupNodePropertyTrackData(fakeNodeId);
- QCOMPARE(trackData.namedProperties, propertyNamesList);
- QCOMPARE(trackData.updateMode, Qt3DCore::QNode::TrackNamedPropertiesMode);
+ QCOMPARE(trackData.trackedPropertiesOverrides.size(), 1);
+ QCOMPARE(trackData.defaultTrackMode, Qt3DCore::QNode::DontTrackValues);
}
void tst_QScene::removePropertyTrackData()
@@ -486,15 +553,15 @@ void tst_QScene::removePropertyTrackData()
// WHEN
Qt3DCore::QScene::NodePropertyTrackData trackData;
- trackData.namedProperties = QStringList() << QStringLiteral("1584");
- trackData.updateMode = Qt3DCore::QNode::TrackNamedPropertiesMode;
+ trackData.trackedPropertiesOverrides.insert(QStringLiteral("1584"), Qt3DCore::QNode::TrackAllValues);
+ trackData.defaultTrackMode = Qt3DCore::QNode::DontTrackValues;
scene->setPropertyTrackDataForNode(fakeNodeId, trackData);
scene->removePropertyTrackDataForNode(fakeNodeId);
// THEN -> default value for non existent id
trackData = scene->lookupNodePropertyTrackData(fakeNodeId);
- QCOMPARE(trackData.namedProperties, QStringList());
- QCOMPARE(trackData.updateMode, Qt3DCore::QNode::DefaultTrackMode);
+ QCOMPARE(trackData.trackedPropertiesOverrides.size(), 0);
+ QCOMPARE(trackData.defaultTrackMode, Qt3DCore::QNode::TrackFinalValues);
}
void tst_QScene::nodeSetAndUnsetPropertyTrackData()
@@ -505,9 +572,8 @@ void tst_QScene::nodeSetAndUnsetPropertyTrackData()
Qt3DCore::QNodePrivate::get(&parentNode)->setScene(scene.data());
Qt3DCore::QNode *childNode = new Qt3DCore::QNode();
- const QStringList propertyNamesList = QStringList() << QStringLiteral("883");
- childNode->setTrackedProperties(propertyNamesList);
- childNode->setPropertyTrackMode(Qt3DCore::QNode::TrackNamedPropertiesMode);
+ childNode->setPropertyTracking(QStringLiteral("883"), Qt3DCore::QNode::TrackAllValues);
+ childNode->setDefaultPropertyTrackingMode(Qt3DCore::QNode::DontTrackValues);
// WHEN
childNode->setParent(&parentNode);
@@ -516,8 +582,9 @@ void tst_QScene::nodeSetAndUnsetPropertyTrackData()
// THEN
QCOMPARE(Qt3DCore::QNodePrivate::get(childNode)->m_scene, scene.data());
Qt3DCore::QScene::NodePropertyTrackData trackData = scene->lookupNodePropertyTrackData(childNode->id());
- QCOMPARE(trackData.updateMode, Qt3DCore::QNode::TrackNamedPropertiesMode);
- QCOMPARE(trackData.namedProperties, propertyNamesList);
+ QCOMPARE(trackData.defaultTrackMode, Qt3DCore::QNode::DontTrackValues);
+ QCOMPARE(trackData.trackedPropertiesOverrides.size(), 1);
+ QCOMPARE(trackData.trackedPropertiesOverrides[QStringLiteral("883")], Qt3DCore::QNode::TrackAllValues);
// WHEN
const Qt3DCore::QNodeId childNodeId = childNode->id();
@@ -526,8 +593,8 @@ void tst_QScene::nodeSetAndUnsetPropertyTrackData()
// THEN -> default value for non existent id
trackData = scene->lookupNodePropertyTrackData(childNodeId);
- QCOMPARE(trackData.namedProperties, QStringList());
- QCOMPARE(trackData.updateMode, Qt3DCore::QNode::DefaultTrackMode);
+ QCOMPARE(trackData.trackedPropertiesOverrides.size(), 0);
+ QCOMPARE(trackData.defaultTrackMode, Qt3DCore::QNode::TrackFinalValues);
}
void tst_QScene::nodeUpdatePropertyTrackData()
@@ -538,9 +605,9 @@ void tst_QScene::nodeUpdatePropertyTrackData()
Qt3DCore::QNodePrivate::get(&parentNode)->setScene(scene.data());
Qt3DCore::QNode *childNode = new Qt3DCore::QNode();
- const QStringList propertyNamesList = QStringList() << QStringLiteral("883");
- childNode->setTrackedProperties(propertyNamesList);
- childNode->setPropertyTrackMode(Qt3DCore::QNode::TrackNamedPropertiesMode);
+ const QString propertyName = QStringLiteral("883");
+ childNode->setPropertyTracking(propertyName, Qt3DCore::QNode::TrackFinalValues);
+ childNode->setDefaultPropertyTrackingMode(Qt3DCore::QNode::DontTrackValues);
// WHEN
childNode->setParent(&parentNode);
@@ -549,23 +616,26 @@ void tst_QScene::nodeUpdatePropertyTrackData()
// THEN
QCOMPARE(Qt3DCore::QNodePrivate::get(childNode)->m_scene, scene.data());
Qt3DCore::QScene::NodePropertyTrackData trackData = scene->lookupNodePropertyTrackData(childNode->id());
- QCOMPARE(trackData.updateMode, Qt3DCore::QNode::TrackNamedPropertiesMode);
- QCOMPARE(trackData.namedProperties, propertyNamesList);
+ QCOMPARE(trackData.defaultTrackMode, Qt3DCore::QNode::DontTrackValues);
+ QCOMPARE(trackData.trackedPropertiesOverrides.size(), 1);
+ QCOMPARE(trackData.trackedPropertiesOverrides[propertyName], Qt3DCore::QNode::TrackFinalValues);
// WHEN
- childNode->setPropertyTrackMode(Qt3DCore::QNode::TrackAllPropertiesMode);
+ childNode->setDefaultPropertyTrackingMode(Qt3DCore::QNode::TrackAllValues);
// THEN
trackData = scene->lookupNodePropertyTrackData(childNode->id());
- QCOMPARE(trackData.updateMode, Qt3DCore::QNode::TrackAllPropertiesMode);
+ QCOMPARE(trackData.defaultTrackMode, Qt3DCore::QNode::TrackAllValues);
// WHEN
- const QStringList propertyNamesList2 = QStringList() << QStringLiteral("Viper");
- childNode->setTrackedProperties(propertyNamesList2);
+ const QString propertyName2 = QStringLiteral("Viper");
+ childNode->setPropertyTracking(propertyName2, Qt3DCore::QNode::DontTrackValues);
// THEN
trackData = scene->lookupNodePropertyTrackData(childNode->id());
- QCOMPARE(trackData.namedProperties, propertyNamesList2);
+ QCOMPARE(trackData.trackedPropertiesOverrides.size(), 2);
+ QCOMPARE(trackData.trackedPropertiesOverrides[propertyName], Qt3DCore::QNode::TrackFinalValues);
+ QCOMPARE(trackData.trackedPropertiesOverrides[propertyName2], Qt3DCore::QNode::DontTrackValues);
}
QTEST_MAIN(tst_QScene)