summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2018-01-19 10:36:58 +0100
committerPaul Lemire <paul.lemire@kdab.com>2018-01-22 06:08:57 +0000
commitbf6d107b90b8a5e9f24da0c0f551c66952dbf57b (patch)
treeaf6cb25075ea8d8ea2fc68904f6a42950dc5e731 /tests
parent2ca0dbadaac328826807c6b9bf2b46dbb955e3d2 (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.cpp68
-rw-r--r--tests/auto/render/qmesh/tst_qmesh.cpp23
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)