diff options
Diffstat (limited to 'tests/auto/render/geometryloaders/tst_geometryloaders.cpp')
-rw-r--r-- | tests/auto/render/geometryloaders/tst_geometryloaders.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/auto/render/geometryloaders/tst_geometryloaders.cpp b/tests/auto/render/geometryloaders/tst_geometryloaders.cpp index e0141a51d..7fc914cda 100644 --- a/tests/auto/render/geometryloaders/tst_geometryloaders.cpp +++ b/tests/auto/render/geometryloaders/tst_geometryloaders.cpp @@ -65,6 +65,7 @@ private Q_SLOTS: void testOBJLoader(); void testPLYLoader(); void testSTLLoader(); + void testGLTFLoader(); #ifdef QT_3DGEOMETRYLOADERS_FBX void testFBXLoader(); #endif @@ -193,6 +194,48 @@ void tst_geometryloaders::testSTLLoader() file.close(); } +void tst_geometryloaders::testGLTFLoader() +{ + QScopedPointer<QGeometryLoaderInterface> loader; + loader.reset(qLoadPlugin<QGeometryLoaderInterface, QGeometryLoaderFactory>(geometryLoader(), QStringLiteral("gltf"))); + QVERIFY(loader); + if (!loader) + return; + + QFile file(QStringLiteral(":/cube.gltf")); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + qDebug("Could not open test file for reading"); + return; + } + + bool loaded = loader->load(&file, QStringLiteral("Cube")); + QVERIFY(loaded); + if (!loaded) + return; + + QGeometry *geometry = loader->geometry(); + QVERIFY(geometry); + if (!geometry) + return; + + QCOMPARE(geometry->attributes().count(), 3); + for (QAttribute *attr : geometry->attributes()) { + switch (attr->attributeType()) { + case QAttribute::IndexAttribute: + QCOMPARE(attr->count(), 36u); + break; + case QAttribute::VertexAttribute: + QCOMPARE(attr->count(), 24u); + break; + default: + Q_UNREACHABLE(); + break; + } + } + + file.close(); +} + #ifdef QT_3DGEOMETRYLOADERS_FBX void tst_geometryloaders::testFBXLoader() { |