diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2018-01-19 10:36:58 +0100 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2018-01-22 06:08:57 +0000 |
commit | bf6d107b90b8a5e9f24da0c0f551c66952dbf57b (patch) | |
tree | af6cb25075ea8d8ea2fc68904f6a42950dc5e731 /tests | |
parent | 2ca0dbadaac328826807c6b9bf2b46dbb955e3d2 (diff) |
QMesh: do not rely on QAspectEngine to create QGeometryFactory
- This would prevent QMesh created without parent/scene to have a proper
geometry factory.
- This avoid passing the engine around
Change-Id: I5091970f96e87ab8b129475a1113ef84ce170388
Task-number: QTBUG-65506
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/render/meshfunctors/tst_meshfunctors.cpp | 68 | ||||
-rw-r--r-- | tests/auto/render/qmesh/tst_qmesh.cpp | 23 |
2 files changed, 80 insertions, 11 deletions
diff --git a/tests/auto/render/meshfunctors/tst_meshfunctors.cpp b/tests/auto/render/meshfunctors/tst_meshfunctors.cpp index 1904169fb..5d89767c7 100644 --- a/tests/auto/render/meshfunctors/tst_meshfunctors.cpp +++ b/tests/auto/render/meshfunctors/tst_meshfunctors.cpp @@ -100,6 +100,24 @@ class tst_MeshFunctors : public QObject { Q_OBJECT private Q_SLOTS: + + void checkInitialState() + { + // GIVEN + Qt3DRender::QMesh mesh; + mesh.setSource(QUrl(QStringLiteral("./some_path.obj"))); + + // WHEN + const Qt3DRender::MeshLoaderFunctor functor(&mesh); + + // THEN + QVERIFY(functor.nodeManagers() == nullptr); + QVERIFY(functor.downloaderService() == nullptr); + QVERIFY(functor.sourceData().isEmpty()); + QCOMPARE(functor.mesh(), mesh.id()); + QCOMPARE(functor.sourcePath(), mesh.source()); + } + void functorComparison() { // GIVEN @@ -125,7 +143,6 @@ private Q_SLOTS: void checkMeshFunctorEquality() { // GIVEN - Qt3DCore::QAspectEngine engine; auto meshA = new Qt3DRender::QMesh(); meshA->setSource(QUrl::fromLocalFile(QLatin1String("/foo"))); meshA->setMeshName(QLatin1String("bar")); @@ -142,10 +159,10 @@ private Q_SLOTS: meshD->setSource(QUrl::fromLocalFile(QLatin1String("/foo"))); meshD->setMeshName(QLatin1String("bar")); - const Qt3DRender::MeshLoaderFunctor functorA(meshA, &engine); - const Qt3DRender::MeshLoaderFunctor functorB(meshB, &engine); - const Qt3DRender::MeshLoaderFunctor functorC(meshC, &engine); - const Qt3DRender::MeshLoaderFunctor functorD(meshD, &engine); + const Qt3DRender::MeshLoaderFunctor functorA(meshA); + const Qt3DRender::MeshLoaderFunctor functorB(meshB); + const Qt3DRender::MeshLoaderFunctor functorC(meshC); + const Qt3DRender::MeshLoaderFunctor functorD(meshD); // WHEN const bool selfEquality = (functorA == functorA); @@ -159,6 +176,47 @@ private Q_SLOTS: QCOMPARE(sameMeshName, false); QCOMPARE(perfectMatch, true); } + + void checkExecution() + { + { + // GIVEN + Qt3DRender::QMesh mesh; + Qt3DRender::MeshLoaderFunctor functor(&mesh); + + // WHEN + const Qt3DRender::QGeometry *g = functor(); + + // THEN + QVERIFY(g == nullptr); + } + + { + // GIVEN + Qt3DRender::QMesh mesh; + mesh.setSource(QUrl(QStringLiteral("./non_existing.obj"))); + Qt3DRender::MeshLoaderFunctor functor(&mesh); + + // WHEN + const Qt3DRender::QGeometry *g = functor(); + + // THEN + QVERIFY(g == nullptr); + } + + { + // GIVEN + Qt3DRender::QMesh mesh; + mesh.setSource(QUrl(QStringLiteral("http://www.somedomain.org/non_exisiting.obj"))); + Qt3DRender::MeshLoaderFunctor functor(&mesh); + + // WHEN + const Qt3DRender::QGeometry *g = functor(); + + // THEN + QVERIFY(g == nullptr); + } + } }; QTEST_MAIN(tst_MeshFunctors) diff --git a/tests/auto/render/qmesh/tst_qmesh.cpp b/tests/auto/render/qmesh/tst_qmesh.cpp index 67d938add..fbc566395 100644 --- a/tests/auto/render/qmesh/tst_qmesh.cpp +++ b/tests/auto/render/qmesh/tst_qmesh.cpp @@ -137,8 +137,8 @@ private Q_SLOTS: const auto creationChangeData = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<Qt3DRender::QGeometryRendererData>>(creationChanges.first()); const Qt3DRender::QGeometryRendererData cloneData = creationChangeData->data; - // Geometry factory is null until the engine becomes available - QVERIFY(cloneData.geometryFactory == nullptr); + // Geometry factory shouldn't be null + QVERIFY(cloneData.geometryFactory != nullptr); QCOMPARE(mesh.id(), creationChangeData->subjectId()); QCOMPARE(mesh.isEnabled(), true); QCOMPARE(mesh.isEnabled(), creationChangeData->isNodeEnabled()); @@ -194,8 +194,8 @@ private Q_SLOTS: Qt3DRender::QGeometryFactoryPtr factory = change->value().value<Qt3DRender::QGeometryFactoryPtr>(); QSharedPointer<Qt3DRender::MeshLoaderFunctor> meshFunctor = qSharedPointerCast<Qt3DRender::MeshLoaderFunctor>(factory); QVERIFY(meshFunctor != nullptr); - QCOMPARE(meshFunctor->m_mesh, mesh.id()); - QCOMPARE(meshFunctor->m_sourcePath, mesh.source()); + QCOMPARE(meshFunctor->mesh(), mesh.id()); + QCOMPARE(meshFunctor->sourcePath(), mesh.source()); arbiter.events.clear(); } @@ -239,8 +239,8 @@ private Q_SLOTS: Qt3DRender::QGeometryFactoryPtr factory = change->value().value<Qt3DRender::QGeometryFactoryPtr>(); QSharedPointer<Qt3DRender::MeshLoaderFunctor> meshFunctor = qSharedPointerCast<Qt3DRender::MeshLoaderFunctor>(factory); QVERIFY(meshFunctor != nullptr); - QCOMPARE(meshFunctor->m_mesh, mesh.id()); - QCOMPARE(meshFunctor->m_meshName, mesh.meshName()); + QCOMPARE(meshFunctor->mesh(), mesh.id()); + QCOMPARE(meshFunctor->meshName(), mesh.meshName()); arbiter.events.clear(); } @@ -278,6 +278,17 @@ private Q_SLOTS: QCOMPARE(spy.count(), 1); } + void checkGeometryFactoryIsAccessibleEvenWithNoScene() // QTBUG-65506 + { + // GIVEN + Qt3DRender::QMesh mesh; + + // WHEN + mesh.setSource(QUrl(QStringLiteral("some_path"))); + + // THEN + QVERIFY(!mesh.geometryFactory().isNull()); + } }; QTEST_MAIN(tst_QMesh) |