summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2018-08-17 14:50:10 +0200
committerLaszlo Agocs <laszlo.agocs@qt.io>2018-08-17 14:30:51 +0000
commit82c126ff968e09cc25be6381dc218d6bee2a5494 (patch)
tree6515ffac134270e7f87bf314a8c74994b38addd1 /tests
parente4465ae2e136645c1060a9be58f53bea8f7baef3 (diff)
Add Object3D tests covering object ordering
...and fix a small glitch that prevented objects being detached from the parent when m_layer was null (because the object was never attached to a live Layer3D). Change-Id: I2479d255aa150bae085d845dd36061b4ffbf19a9 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/studio3dengine/tst_studio3dengine.cpp104
1 files changed, 104 insertions, 0 deletions
diff --git a/tests/auto/studio3dengine/tst_studio3dengine.cpp b/tests/auto/studio3dengine/tst_studio3dengine.cpp
index 4694e81..423757a 100644
--- a/tests/auto/studio3dengine/tst_studio3dengine.cpp
+++ b/tests/auto/studio3dengine/tst_studio3dengine.cpp
@@ -52,6 +52,7 @@ private Q_SLOTS:
void testSimple();
void testReparent();
void testReparentSubTree();
+ void testParentingOrder();
void testEngineChangeToNullAndBack();
void testLayerParentNullAndBack();
};
@@ -271,6 +272,109 @@ void tst_Studio3DEngine::testReparentSubTree()
QCOMPARE(group3d_3->layer(), layer3d);
}
+void tst_Studio3DEngine::testParentingOrder()
+{
+ QQuickView view;
+ view.setResizeMode(QQuickView::SizeRootObjectToView);
+ view.setSource(QUrl(QLatin1String("qrc:/data/simple.qml")));
+
+ view.resize(600, 500);
+ view.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&view));
+
+ if (view.rendererInterface()->graphicsApi() != QSGRendererInterface::OpenGL)
+ QSKIP("This test needs Qt Quick on OpenGL");
+
+ Q3DSLayer3D *layer3d = qobject_cast<Q3DSLayer3D *>(view.rootObject()->childItems()[1]);
+ Q3DSLayerNode *layer3DS = layer3d->layerNode();
+ Q3DSGroup3D *group3d_1 = qobject_cast<Q3DSGroup3D *>(layer3d->childItems()[0]);
+ Q3DSGroupNode *group3DS_1 = static_cast<Q3DSGroupNode *>(group3d_1->object());
+ Q3DSGroup3D *group3d_2 = qobject_cast<Q3DSGroup3D *>(group3d_1->childItems()[0]);
+ Q3DSGroupNode *group3DS_2 = static_cast<Q3DSGroupNode *>(group3d_2->object());
+
+ // Layer(Group1(Group2))
+ QCOMPARE(group3DS_2->parent(), group3DS_1);
+ QCOMPARE(group3DS_1->parent(), layer3DS);
+ QCOMPARE(layer3d->slide()->objects().count(), 3);
+ QCOMPARE(group3d_1->layer(), layer3d);
+ QCOMPARE(group3d_2->layer(), layer3d);
+
+ // Layer Group1 Group2
+ group3d_1->setParentItem(nullptr);
+ QVERIFY(!group3DS_1->parent());
+ QVERIFY(!group3DS_1->nextSibling());
+ QVERIFY(!group3d_1->layer());
+ group3d_2->setParentItem(nullptr);
+ QVERIFY(!group3DS_2->parent());
+ QVERIFY(!group3DS_2->nextSibling());
+ QVERIFY(!group3d_2->layer());
+
+ // Layer Group1(Group4 Group3 Group5) Group2
+ Q3DSGroup3D *group3d_3 = new Q3DSGroup3D;
+ Q3DSGroup3D *group3d_4 = new Q3DSGroup3D;
+ Q3DSGroup3D *group3d_5 = new Q3DSGroup3D;
+ group3d_4->setParentItem(group3d_1);
+ QVERIFY(!group3d_4->object());
+ group3d_3->setParentItem(group3d_1);
+ QVERIFY(!group3d_3->object());
+ group3d_5->setParentItem(group3d_1);
+ QVERIFY(!group3d_5->object());
+
+ // Layer(Group1(Group4 Group3 Group5)) Group2
+ group3d_1->setParentItem(layer3d);
+ Q3DSGroupNode *group3DS_4 = group3d_4->groupNode();
+ Q3DSGroupNode *group3DS_3 = group3d_3->groupNode();
+ Q3DSGroupNode *group3DS_5 = group3d_5->groupNode();
+ QVERIFY(group3DS_4);
+ QVERIFY(group3DS_3);
+ QVERIFY(group3DS_5);
+ QCOMPARE(group3d_4->layer(), layer3d);
+ QCOMPARE(group3d_3->layer(), layer3d);
+ QCOMPARE(group3d_5->layer(), layer3d);
+ QCOMPARE(group3DS_4->parent(), group3DS_1);
+ QCOMPARE(group3DS_3->parent(), group3DS_1);
+ QCOMPARE(group3DS_5->parent(), group3DS_1);
+ QCOMPARE(group3DS_4->nextSibling(), group3DS_3);
+ QCOMPARE(group3DS_3->nextSibling(), group3DS_5);
+ QCOMPARE(group3DS_5->nextSibling(), nullptr);
+ QCOMPARE(group3DS_1->childCount(), 3);
+ QCOMPARE(layer3d->slide()->objects().count(), 5);
+
+ // Layer(Group1(Group4 Group3 Group5)) Group2(Group6 Group7(Group8))
+ Q3DSGroup3D *group3d_6 = new Q3DSGroup3D;
+ Q3DSGroup3D *group3d_7 = new Q3DSGroup3D;
+ Q3DSGroup3D *group3d_8 = new Q3DSGroup3D;
+ group3d_6->setParentItem(group3d_2);
+ QVERIFY(!group3d_6->object());
+ group3d_7->setParentItem(group3d_2);
+ QVERIFY(!group3d_7->object());
+ group3d_8->setParentItem(group3d_7);
+ QVERIFY(!group3d_8->object());
+
+ // Layer(Group1(Group4 Group3 Group5) Group2(Group6 Group7(Group8)))
+ group3d_2->setParentItem(layer3d);
+ Q3DSGroupNode *group3DS_6 = group3d_6->groupNode();
+ Q3DSGroupNode *group3DS_7 = group3d_7->groupNode();
+ Q3DSGroupNode *group3DS_8 = group3d_8->groupNode();
+ QVERIFY(group3DS_6);
+ QVERIFY(group3DS_7);
+ QVERIFY(group3DS_8);
+ QCOMPARE(group3d_6->layer(), layer3d);
+ QCOMPARE(group3d_7->layer(), layer3d);
+ QCOMPARE(group3d_8->layer(), layer3d);
+ QCOMPARE(group3DS_2->parent(), layer3DS);
+ QCOMPARE(group3DS_1->nextSibling(), group3DS_2);
+ QCOMPARE(group3DS_2->nextSibling(), nullptr);
+ QCOMPARE(group3DS_2->previousSibling(), group3DS_1);
+ QCOMPARE(layer3d->slide()->objects().count(), 9);
+ QCOMPARE(group3DS_6->parent(), group3DS_2);
+ QCOMPARE(group3DS_7->parent(), group3DS_2);
+ QCOMPARE(group3DS_8->parent(), group3DS_7);
+ QCOMPARE(group3DS_6->nextSibling(), group3DS_7);
+ QCOMPARE(group3DS_7->nextSibling(), nullptr);
+ QCOMPARE(group3DS_8->nextSibling(), nullptr);
+}
+
void tst_Studio3DEngine::testEngineChangeToNullAndBack()
{
QQuickView view;