From a9f56df27973a2aa868ce2c286fa7a5e042ba2a7 Mon Sep 17 00:00:00 2001 From: JosiahWI Date: Mon, 17 Oct 2022 07:17:07 -0500 Subject: [PATCH] Test that minimal triangle returns some mesh --- source/Irrlicht/CGLTFMeshFileLoader.cpp | 39 +++++++++++ .../tests/assets/minimal_triangle.gltf | 70 +++++++++++++++++++ .../tests/testCGLTFMeshFileLoader.cpp | 15 +++- 3 files changed, 122 insertions(+), 2 deletions(-) create mode 100644 source/Irrlicht/CGLTFMeshFileLoader.cpp create mode 100644 source/Irrlicht/tests/assets/minimal_triangle.gltf diff --git a/source/Irrlicht/CGLTFMeshFileLoader.cpp b/source/Irrlicht/CGLTFMeshFileLoader.cpp new file mode 100644 index 00000000..6b1397d9 --- /dev/null +++ b/source/Irrlicht/CGLTFMeshFileLoader.cpp @@ -0,0 +1,39 @@ +#include "CGLTFMeshFileLoader.h" +#include "coreutil.h" +#include "IAnimatedMesh.h" +#include "IReadFile.h" +#include "path.h" +#include "SAnimatedMesh.h" + +namespace irr +{ + +namespace scene +{ + +CGLTFMeshFileLoader::CGLTFMeshFileLoader() +{ +} + +bool CGLTFMeshFileLoader::isALoadableFileExtension( + const io::path& filename) const +{ + return core::hasFileExtension(filename, "gltf"); +} + +IAnimatedMesh* CGLTFMeshFileLoader::createMesh(io::IReadFile* file) +{ + if (file->getSize() == 0) { + return nullptr; + } + + // sorry Bjarne + SAnimatedMesh* mesh { new SAnimatedMesh {} }; + + return mesh; +} + +} // namespace irr + +} // namespace scene + diff --git a/source/Irrlicht/tests/assets/minimal_triangle.gltf b/source/Irrlicht/tests/assets/minimal_triangle.gltf new file mode 100644 index 00000000..412dbac5 --- /dev/null +++ b/source/Irrlicht/tests/assets/minimal_triangle.gltf @@ -0,0 +1,70 @@ +{ + "scene": 0, + "scenes" : [ + { + "nodes" : [ 0 ] + } + ], + + "nodes" : [ + { + "mesh" : 0 + } + ], + + "meshes" : [ + { + "primitives" : [ { + "attributes" : { + "POSITION" : 1 + }, + "indices" : 0 + } ] + } + ], + + "buffers" : [ + { + "uri" : "data:application/octet-stream;base64,AAABAAIAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAA=", + "byteLength" : 44 + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteOffset" : 0, + "byteLength" : 6, + "target" : 34963 + }, + { + "buffer" : 0, + "byteOffset" : 8, + "byteLength" : 36, + "target" : 34962 + } + ], + "accessors" : [ + { + "bufferView" : 0, + "byteOffset" : 0, + "componentType" : 5123, + "count" : 3, + "type" : "SCALAR", + "max" : [ 2 ], + "min" : [ 0 ] + }, + { + "bufferView" : 1, + "byteOffset" : 0, + "componentType" : 5126, + "count" : 3, + "type" : "VEC3", + "max" : [ 1.0, 1.0, 0.0 ], + "min" : [ 0.0, 0.0, 0.0 ] + } + ], + + "asset" : { + "version" : "2.0" + } +} diff --git a/source/Irrlicht/tests/testCGLTFMeshFileLoader.cpp b/source/Irrlicht/tests/testCGLTFMeshFileLoader.cpp index 179777f4..7dacf2f4 100644 --- a/source/Irrlicht/tests/testCGLTFMeshFileLoader.cpp +++ b/source/Irrlicht/tests/testCGLTFMeshFileLoader.cpp @@ -8,10 +8,21 @@ TEST_CASE("load empty gltf file") { irr::IrrlichtDevice* device { irr::createDevice(irr::video::EDT_NULL) }; irr::scene::ISceneManager* smgr { device->getSceneManager() }; - irr::io::InMemoryFile filebuf{"test.gltf", ""}; + irr::io::InMemoryFile filebuf {"test.gltf", ""}; auto* mesh { smgr->getMesh(&filebuf) }; - REQUIRE(mesh == nullptr); + CHECK(mesh == nullptr); + + device->drop(); +} + +TEST_CASE("load minimal triangle") { + irr::IrrlichtDevice* device { irr::createDevice(irr::video::EDT_NULL) }; + irr::scene::ISceneManager* smgr { device->getSceneManager() }; + + auto* mesh { smgr->getMesh( + "source/Irrlicht/tests/assets/minimal_triangle.gltf", "") }; + REQUIRE(mesh != nullptr); device->drop(); }