From b45aa1cd7242ac327487e3bf194ed807a9ed02df Mon Sep 17 00:00:00 2001 From: Josiah VanderZee Date: Wed, 22 May 2024 12:52:41 -0500 Subject: [PATCH] Get unit tests to build --- src/CMakeLists.txt | 10 +++++++ src/unittest/CMakeLists.txt | 2 ++ .../unittest}/assets/blender_cube.gltf | 0 .../assets/blender_cube_matrix_transform.gltf | 0 .../unittest}/assets/blender_cube_scaled.gltf | 0 .../tests => src/unittest}/assets/empty.gltf | 0 .../unittest}/assets/json_missing_brace.gltf | 0 .../unittest}/assets/minimal_triangle.gltf | 0 .../unittest}/assets/snow_man.gltf | 0 .../assets/triangle_with_vertex_stride.gltf | 0 .../assets/triangle_without_indices.gltf | 0 .../unittest/test_irr_gltf_mesh_loader.cpp | 26 ++++++++++++------- 12 files changed, 28 insertions(+), 10 deletions(-) rename {irr/src/tests => src/unittest}/assets/blender_cube.gltf (100%) rename {irr/src/tests => src/unittest}/assets/blender_cube_matrix_transform.gltf (100%) rename {irr/src/tests => src/unittest}/assets/blender_cube_scaled.gltf (100%) rename {irr/src/tests => src/unittest}/assets/empty.gltf (100%) rename {irr/src/tests => src/unittest}/assets/json_missing_brace.gltf (100%) rename {irr/src/tests => src/unittest}/assets/minimal_triangle.gltf (100%) rename {irr/src/tests => src/unittest}/assets/snow_man.gltf (100%) rename {irr/src/tests => src/unittest}/assets/triangle_with_vertex_stride.gltf (100%) rename {irr/src/tests => src/unittest}/assets/triangle_without_indices.gltf (100%) rename irr/src/tests/testCGLTFMeshFileLoader.cpp => src/unittest/test_irr_gltf_mesh_loader.cpp (94%) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 955bf05f2..dc538d1d7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -645,6 +645,11 @@ if(BUILD_CLIENT) if (USE_SPATIAL) target_link_libraries(${PROJECT_NAME} ${SPATIAL_LIBRARY}) endif() + if(BUILD_UNITTESTS) + target_compile_definitions(${PROJECT_NAME} PRIVATE + UNITTEST_ASSETS_DIRECTORY=${UNITTEST_ASSETS_DIRECTORY} + ) + endif() if(BUILD_UNITTESTS OR BUILD_BENCHMARKS) target_link_libraries(${PROJECT_NAME} Catch2::Catch2) endif() @@ -712,6 +717,11 @@ if(BUILD_SERVER) ${CURL_LIBRARY} ) endif() + if(BUILD_UNITTESTS) + target_compile_definitions(${PROJECT_NAME} PRIVATE + UNITTEST_ASSETS_DIRECTORY=${UNITTEST_ASSETS_DIRECTORY} + ) + endif() if(BUILD_UNITTESTS OR BUILD_BENCHMARKS) target_link_libraries(${PROJECT_NAME}server Catch2::Catch2) endif() diff --git a/src/unittest/CMakeLists.txt b/src/unittest/CMakeLists.txt index ec52ee6bf..5b09ef0b8 100644 --- a/src/unittest/CMakeLists.txt +++ b/src/unittest/CMakeLists.txt @@ -49,7 +49,9 @@ set (UNITTEST_CLIENT_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/test_content_mapblock.cpp ${CMAKE_CURRENT_SOURCE_DIR}/test_eventmanager.cpp ${CMAKE_CURRENT_SOURCE_DIR}/test_gameui.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/test_irr_gltf_mesh_loader.cpp ${CMAKE_CURRENT_SOURCE_DIR}/test_mesh_compare.cpp ${CMAKE_CURRENT_SOURCE_DIR}/test_keycode.cpp PARENT_SCOPE) +set (UNITTEST_ASSETS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/assets" PARENT_SCOPE) diff --git a/irr/src/tests/assets/blender_cube.gltf b/src/unittest/assets/blender_cube.gltf similarity index 100% rename from irr/src/tests/assets/blender_cube.gltf rename to src/unittest/assets/blender_cube.gltf diff --git a/irr/src/tests/assets/blender_cube_matrix_transform.gltf b/src/unittest/assets/blender_cube_matrix_transform.gltf similarity index 100% rename from irr/src/tests/assets/blender_cube_matrix_transform.gltf rename to src/unittest/assets/blender_cube_matrix_transform.gltf diff --git a/irr/src/tests/assets/blender_cube_scaled.gltf b/src/unittest/assets/blender_cube_scaled.gltf similarity index 100% rename from irr/src/tests/assets/blender_cube_scaled.gltf rename to src/unittest/assets/blender_cube_scaled.gltf diff --git a/irr/src/tests/assets/empty.gltf b/src/unittest/assets/empty.gltf similarity index 100% rename from irr/src/tests/assets/empty.gltf rename to src/unittest/assets/empty.gltf diff --git a/irr/src/tests/assets/json_missing_brace.gltf b/src/unittest/assets/json_missing_brace.gltf similarity index 100% rename from irr/src/tests/assets/json_missing_brace.gltf rename to src/unittest/assets/json_missing_brace.gltf diff --git a/irr/src/tests/assets/minimal_triangle.gltf b/src/unittest/assets/minimal_triangle.gltf similarity index 100% rename from irr/src/tests/assets/minimal_triangle.gltf rename to src/unittest/assets/minimal_triangle.gltf diff --git a/irr/src/tests/assets/snow_man.gltf b/src/unittest/assets/snow_man.gltf similarity index 100% rename from irr/src/tests/assets/snow_man.gltf rename to src/unittest/assets/snow_man.gltf diff --git a/irr/src/tests/assets/triangle_with_vertex_stride.gltf b/src/unittest/assets/triangle_with_vertex_stride.gltf similarity index 100% rename from irr/src/tests/assets/triangle_with_vertex_stride.gltf rename to src/unittest/assets/triangle_with_vertex_stride.gltf diff --git a/irr/src/tests/assets/triangle_without_indices.gltf b/src/unittest/assets/triangle_without_indices.gltf similarity index 100% rename from irr/src/tests/assets/triangle_without_indices.gltf rename to src/unittest/assets/triangle_without_indices.gltf diff --git a/irr/src/tests/testCGLTFMeshFileLoader.cpp b/src/unittest/test_irr_gltf_mesh_loader.cpp similarity index 94% rename from irr/src/tests/testCGLTFMeshFileLoader.cpp rename to src/unittest/test_irr_gltf_mesh_loader.cpp index 3c46d53cc..81313291e 100644 --- a/irr/src/tests/testCGLTFMeshFileLoader.cpp +++ b/src/unittest/test_irr_gltf_mesh_loader.cpp @@ -1,6 +1,10 @@ // Minetest // SPDX-License-Identifier: LGPL-2.1-or-later +#ifndef UNITTEST_ASSETS_DIRECTORY +#error "The required definition for UNITTEST_ASSETS_DIRECTORY is missing." +#endif + #include "CReadFile.h" #include "vector3d.h" @@ -8,11 +12,13 @@ // Catch needs to be included after Irrlicht so that it sees operator<< // declarations. -#define CATCH_CONFIG_MAIN #include #include +#define XSTR(s) STR(s) +#define STR(s) #s + using namespace std; class ScopedMesh @@ -52,16 +58,16 @@ class ScopedMesh }; TEST_CASE("load empty gltf file") { - ScopedMesh sm("source/Irrlicht/tests/assets/empty.gltf"); + ScopedMesh sm(XSTR(UNITTEST_ASSETS_DIRECTORY) "/empty.gltf"); CHECK(sm.getMesh() == nullptr); } TEST_CASE("minimal triangle") { auto path = GENERATE( - "source/Irrlicht/tests/assets/minimal_triangle.gltf", - "source/Irrlicht/tests/assets/triangle_with_vertex_stride.gltf", + XSTR(UNITTEST_ASSETS_DIRECTORY) "/minimal_triangle.gltf", + XSTR(UNITTEST_ASSETS_DIRECTORY) "/triangle_with_vertex_stride.gltf", // Test non-indexed geometry. - "source/Irrlicht/tests/assets/triangle_without_indices.gltf"); + XSTR(UNITTEST_ASSETS_DIRECTORY) "/triangle_without_indices.gltf"); INFO(path); ScopedMesh sm(path); REQUIRE(sm.getMesh() != nullptr); @@ -87,7 +93,7 @@ TEST_CASE("minimal triangle") { } TEST_CASE("blender cube") { - ScopedMesh sm("source/Irrlicht/tests/assets/blender_cube.gltf"); + ScopedMesh sm(XSTR(UNITTEST_ASSETS_DIRECTORY) "/blender_cube.gltf"); REQUIRE(sm.getMesh() != nullptr); REQUIRE(sm.getMesh()->getMeshBufferCount() == 1); SECTION("vertex coordinates are correct") { @@ -145,12 +151,12 @@ TEST_CASE("mesh loader returns nullptr when given null file pointer") { } TEST_CASE("invalid JSON returns nullptr") { - ScopedMesh sm("source/Irrlicht/tests/assets/json_missing_brace.gltf"); + ScopedMesh sm(XSTR(UNITTEST_ASSETS_DIRECTORY) "json_missing_brace.gltf"); CHECK(sm.getMesh() == nullptr); } TEST_CASE("blender cube scaled") { - ScopedMesh sm("source/Irrlicht/tests/assets/blender_cube_scaled.gltf"); + ScopedMesh sm(XSTR(UNITTEST_ASSETS_DIRECTORY) "blender_cube_scaled.gltf"); REQUIRE(sm.getMesh() != nullptr); REQUIRE(sm.getMesh()->getMeshBufferCount() == 1); @@ -171,7 +177,7 @@ TEST_CASE("blender cube scaled") { } TEST_CASE("blender cube matrix transform") { - ScopedMesh sm("source/Irrlicht/tests/assets/blender_cube_matrix_transform.gltf"); + ScopedMesh sm(XSTR(UNITTEST_ASSETS_DIRECTORY) "blender_cube_matrix_transform.gltf"); REQUIRE(sm.getMesh() != nullptr); REQUIRE(sm.getMesh()->getMeshBufferCount() == 1); @@ -197,7 +203,7 @@ TEST_CASE("blender cube matrix transform") { } TEST_CASE("snow man") { - ScopedMesh sm("source/Irrlicht/tests/assets/snow_man.gltf"); + ScopedMesh sm(XSTR(UNITTEST_ASSETS_DIRECTORY) "snow_man.gltf"); REQUIRE(sm.getMesh() != nullptr); REQUIRE(sm.getMesh()->getMeshBufferCount() == 3);