Browse Source

AnySceneImporter: test meshAttribute[For]Name() propagation.

It should work even if no file is opened, but that ... crashes.
pull/570/head
Vladimír Vondruš 4 years ago
parent
commit
a67755921b
  1. 33
      src/MagnumPlugins/AnySceneImporter/Test/AnySceneImporterTest.cpp
  2. 1
      src/MagnumPlugins/AnySceneImporter/Test/CMakeLists.txt
  3. 38
      src/MagnumPlugins/AnySceneImporter/Test/mesh-custom-attribute.gltf

33
src/MagnumPlugins/AnySceneImporter/Test/AnySceneImporterTest.cpp

@ -64,6 +64,9 @@ struct AnySceneImporterTest: TestSuite::Tester {
void propagateConfigurationUnknown();
void propagateFileCallback();
void meshAttributeName();
void meshAttributeNameNoFileOpened();
/* Explicitly forbid system-wide plugin dependencies */
PluginManager::Manager<AbstractImporter> _manager{"nonexistent"};
};
@ -108,7 +111,10 @@ AnySceneImporterTest::AnySceneImporterTest() {
&AnySceneImporterTest::propagateFlags,
&AnySceneImporterTest::propagateConfiguration,
&AnySceneImporterTest::propagateConfigurationUnknown,
&AnySceneImporterTest::propagateFileCallback});
&AnySceneImporterTest::propagateFileCallback,
&AnySceneImporterTest::meshAttributeName,
&AnySceneImporterTest::meshAttributeNameNoFileOpened});
/* Load the plugin directly from the build tree. Otherwise it's static and
already loaded. */
@ -307,6 +313,31 @@ void AnySceneImporterTest::propagateFileCallback() {
CORRADE_VERIFY(!importer->isOpened());
}
void AnySceneImporterTest::meshAttributeName() {
PluginManager::Manager<AbstractImporter> manager{MAGNUM_PLUGINS_IMPORTER_INSTALL_DIR};
#ifdef ANYSCENEIMPORTER_PLUGIN_FILENAME
CORRADE_VERIFY(manager.load(ANYSCENEIMPORTER_PLUGIN_FILENAME) & PluginManager::LoadState::Loaded);
#endif
if(manager.load("GltfImporter") < PluginManager::LoadState::Loaded)
CORRADE_SKIP("GltfImporter plugin can't be loaded.");
Containers::Pointer<AbstractImporter> importer = manager.instantiate("AnySceneImporter");
CORRADE_VERIFY(importer->openFile(Utility::Path::join(ANYSCENEIMPORTER_TEST_DIR, "mesh-custom-attribute.gltf")));
CORRADE_COMPARE(importer->meshAttributeForName("_TBN"), meshAttributeCustom(2));
CORRADE_COMPARE(importer->meshAttributeForName("nonexistent"), MeshAttribute{});
CORRADE_COMPARE(importer->meshAttributeName(meshAttributeCustom(2)), "_TBN");
CORRADE_COMPARE(importer->meshAttributeName(meshAttributeCustom(3)), "");
}
void AnySceneImporterTest::meshAttributeNameNoFileOpened() {
Containers::Pointer<AbstractImporter> importer = _manager.instantiate("AnySceneImporter");
CORRADE_COMPARE(importer->meshAttributeForName(""), MeshAttribute{});
CORRADE_COMPARE(importer->meshAttributeName(meshAttributeCustom(0)), "");
}
}}}}
CORRADE_TEST_MAIN(Magnum::Trade::Test::AnySceneImporterTest)

1
src/MagnumPlugins/AnySceneImporter/Test/CMakeLists.txt

@ -56,6 +56,7 @@ corrade_add_test(AnySceneImporterTest AnySceneImporterTest.cpp
LIBRARIES MagnumTrade
FILES
${PROJECT_SOURCE_DIR}/src/MagnumPlugins/ObjImporter/Test/pointMesh.obj
mesh-custom-attribute.gltf
triangle.ply)
target_include_directories(AnySceneImporterTest PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>)
if(MAGNUM_ANYSCENEIMPORTER_BUILD_STATIC)

38
src/MagnumPlugins/AnySceneImporter/Test/mesh-custom-attribute.gltf

@ -0,0 +1,38 @@
{
"asset": {
"version": "2.0"
},
"meshes": [
{
"primitives": [
{
"attributes": {
"_TBN": 0
}
}
]
}
],
"accessors": [
{
"bufferView": 0,
"componentType": 5120,
"normalized": true,
"count": 1,
"type": "MAT3"
}
],
"bufferViews": [
{
"buffer": 0,
"byteLength": 36
}
],
"buffers": [
{
"byteLength": 36,
"comment": "base64.b64encode(bytes(36))",
"uri": "data:application/octet-stream;base64,AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
}
]
}
Loading…
Cancel
Save