1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249
|
From: =?utf-8?q?Timo_R=C3=B6hling?= <timo.roehling@fkie.fraunhofer.de>
Date: Fri, 13 Mar 2020 22:02:46 +0100
Subject: Integrate unit tests with CMake
---
CMakeLists.txt | 3 ++
tests/CMakeLists.txt | 8 ++++
tests/tester.cc | 109 +++++++++++++++++++++++++--------------------------
3 files changed, 65 insertions(+), 55 deletions(-)
create mode 100644 tests/CMakeLists.txt
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c0ae54c..c36d2ad 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -230,3 +230,6 @@ if(NOT TARGET uninstall)
uninstall COMMAND ${CMAKE_COMMAND} -P
${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
endif()
+
+include(CTest)
+add_subdirectory(tests)
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
new file mode 100644
index 0000000..9ea467c
--- /dev/null
+++ b/tests/CMakeLists.txt
@@ -0,0 +1,8 @@
+if(BUILD_TESTING)
+ add_executable(tester tester.cc)
+ target_link_libraries(tester PRIVATE tinyobjloader::tinyobjloader)
+ add_executable(tester_d tester.cc)
+ target_link_libraries(tester_d PRIVATE tinyobjloader::tinyobjloader_double)
+ add_test(NAME test_with_float COMMAND tester WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+ add_test(NAME test_with_double COMMAND tester_d WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+endif()
diff --git a/tests/tester.cc b/tests/tester.cc
index 2f336c7..ea826aa 100644
--- a/tests/tester.cc
+++ b/tests/tester.cc
@@ -1,5 +1,4 @@
-#define TINYOBJLOADER_IMPLEMENTATION
-#include "../tiny_obj_loader.h"
+#include <tiny_obj_loader.h>
#if defined(__clang__)
#pragma clang diagnostic push
@@ -29,13 +28,13 @@
#include <fstream>
#include <iostream>
#include <sstream>
+#include <limits>
-template <typename T>
-static bool FloatEquals(const T& a, const T& b) {
+static bool FloatEquals(const tinyobj::real_t& a, const tinyobj::real_t& b) {
// Edit eps value as you wish.
- const T eps = std::numeric_limits<T>::epsilon() * static_cast<T>(100);
+ const tinyobj::real_t eps = std::numeric_limits<tinyobj::real_t>::epsilon() * static_cast<tinyobj::real_t>(100);
- const T abs_diff = std::abs(a - b);
+ const tinyobj::real_t abs_diff = std::abs(a - b);
if (abs_diff < eps) {
return true;
@@ -448,13 +447,13 @@ void test_pbr() {
}
TEST_CHECK(true == ret);
TEST_CHECK(1 == materials.size());
- TEST_CHECK(FloatEquals(0.2f, materials[0].roughness));
- TEST_CHECK(FloatEquals(0.3f, materials[0].metallic));
- TEST_CHECK(FloatEquals(0.4f, materials[0].sheen));
- TEST_CHECK(FloatEquals(0.5f, materials[0].clearcoat_thickness));
- TEST_CHECK(FloatEquals(0.6f, materials[0].clearcoat_roughness));
- TEST_CHECK(FloatEquals(0.7f, materials[0].anisotropy));
- TEST_CHECK(FloatEquals(0.8f, materials[0].anisotropy_rotation));
+ TEST_CHECK(FloatEquals(0.2, materials[0].roughness));
+ TEST_CHECK(FloatEquals(0.3, materials[0].metallic));
+ TEST_CHECK(FloatEquals(0.4, materials[0].sheen));
+ TEST_CHECK(FloatEquals(0.5, materials[0].clearcoat_thickness));
+ TEST_CHECK(FloatEquals(0.6, materials[0].clearcoat_roughness));
+ TEST_CHECK(FloatEquals(0.7, materials[0].anisotropy));
+ TEST_CHECK(FloatEquals(0.8, materials[0].anisotropy_rotation));
TEST_CHECK(0 == materials[0].roughness_texname.compare("roughness.tex"));
TEST_CHECK(0 == materials[0].metallic_texname.compare("metallic.tex"));
TEST_CHECK(0 == materials[0].sheen_texname.compare("sheen.tex"));
@@ -517,9 +516,9 @@ void test_transmittance_filter_issue95() {
}
TEST_CHECK(true == ret);
TEST_CHECK(1 == materials.size());
- TEST_CHECK(FloatEquals(0.1f, materials[0].transmittance[0]));
- TEST_CHECK(FloatEquals(0.2f, materials[0].transmittance[1]));
- TEST_CHECK(FloatEquals(0.3f, materials[0].transmittance[2]));
+ TEST_CHECK(FloatEquals(0.1, materials[0].transmittance[0]));
+ TEST_CHECK(FloatEquals(0.2, materials[0].transmittance[1]));
+ TEST_CHECK(FloatEquals(0.3, materials[0].transmittance[2]));
}
void test_transmittance_filter_Tf_issue95() {
@@ -541,9 +540,9 @@ void test_transmittance_filter_Tf_issue95() {
}
TEST_CHECK(true == ret);
TEST_CHECK(1 == materials.size());
- TEST_CHECK(FloatEquals(0.1f, materials[0].transmittance[0]));
- TEST_CHECK(FloatEquals(0.2f, materials[0].transmittance[1]));
- TEST_CHECK(FloatEquals(0.3f, materials[0].transmittance[2]));
+ TEST_CHECK(FloatEquals(0.1, materials[0].transmittance[0]));
+ TEST_CHECK(FloatEquals(0.2, materials[0].transmittance[1]));
+ TEST_CHECK(FloatEquals(0.3, materials[0].transmittance[2]));
}
void test_transmittance_filter_Kt_issue95() {
@@ -565,9 +564,9 @@ void test_transmittance_filter_Kt_issue95() {
}
TEST_CHECK(true == ret);
TEST_CHECK(1 == materials.size());
- TEST_CHECK(FloatEquals(0.1f, materials[0].transmittance[0]));
- TEST_CHECK(FloatEquals(0.2f, materials[0].transmittance[1]));
- TEST_CHECK(FloatEquals(0.3f, materials[0].transmittance[2]));
+ TEST_CHECK(FloatEquals(0.1, materials[0].transmittance[0]));
+ TEST_CHECK(FloatEquals(0.2, materials[0].transmittance[1]));
+ TEST_CHECK(FloatEquals(0.3, materials[0].transmittance[2]));
}
void test_usemtl_at_last_line_issue104() {
@@ -616,24 +615,24 @@ void test_texture_opts_issue85() {
TEST_CHECK(0 == materials[1].name.compare("bm2"));
TEST_CHECK(0 == materials[2].name.compare("bm3"));
TEST_CHECK(true == materials[0].ambient_texopt.clamp);
- TEST_CHECK(FloatEquals(0.1f, materials[0].diffuse_texopt.origin_offset[0]));
- TEST_CHECK(FloatEquals(0.0f, materials[0].diffuse_texopt.origin_offset[1]));
- TEST_CHECK(FloatEquals(0.0f, materials[0].diffuse_texopt.origin_offset[2]));
- TEST_CHECK(FloatEquals(0.1f, materials[0].specular_texopt.scale[0]));
- TEST_CHECK(FloatEquals(0.2f, materials[0].specular_texopt.scale[1]));
- TEST_CHECK(FloatEquals(1.0f, materials[0].specular_texopt.scale[2]));
+ TEST_CHECK(FloatEquals(0.1, materials[0].diffuse_texopt.origin_offset[0]));
+ TEST_CHECK(FloatEquals(0.0, materials[0].diffuse_texopt.origin_offset[1]));
+ TEST_CHECK(FloatEquals(0.0, materials[0].diffuse_texopt.origin_offset[2]));
+ TEST_CHECK(FloatEquals(0.1, materials[0].specular_texopt.scale[0]));
+ TEST_CHECK(FloatEquals(0.2, materials[0].specular_texopt.scale[1]));
+ TEST_CHECK(FloatEquals(1.0, materials[0].specular_texopt.scale[2]));
TEST_CHECK(
- FloatEquals(0.1f, materials[0].specular_highlight_texopt.turbulence[0]));
+ FloatEquals(0.1, materials[0].specular_highlight_texopt.turbulence[0]));
TEST_CHECK(
- FloatEquals(0.2f, materials[0].specular_highlight_texopt.turbulence[1]));
+ FloatEquals(0.2, materials[0].specular_highlight_texopt.turbulence[1]));
TEST_CHECK(
- FloatEquals(0.3f, materials[0].specular_highlight_texopt.turbulence[2]));
- TEST_CHECK(FloatEquals(3.0f, materials[0].bump_texopt.bump_multiplier));
+ FloatEquals(0.3, materials[0].specular_highlight_texopt.turbulence[2]));
+ TEST_CHECK(FloatEquals(3.0, materials[0].bump_texopt.bump_multiplier));
TEST_CHECK(
- FloatEquals(0.1f, materials[1].specular_highlight_texopt.brightness));
+ FloatEquals(0.1, materials[1].specular_highlight_texopt.brightness));
TEST_CHECK(
- FloatEquals(0.3f, materials[1].specular_highlight_texopt.contrast));
+ FloatEquals(0.3, materials[1].specular_highlight_texopt.contrast));
TEST_CHECK('r' == materials[1].bump_texopt.imfchan);
TEST_CHECK(tinyobj::TEXTURE_TYPE_SPHERE == materials[2].diffuse_texopt.type);
@@ -692,8 +691,8 @@ void test_tr_and_d_issue43() {
TEST_CHECK(true == ret);
TEST_CHECK(2 == materials.size());
- TEST_CHECK(FloatEquals(0.75f, materials[0].dissolve));
- TEST_CHECK(FloatEquals(0.75f, materials[1].dissolve));
+ TEST_CHECK(FloatEquals(0.75, materials[0].dissolve));
+ TEST_CHECK(FloatEquals(0.75, materials[1].dissolve));
}
void test_refl() {
@@ -797,19 +796,19 @@ void test_vertex_col_ext_issue144() {
TEST_CHECK(true == ret);
TEST_CHECK((8 * 3) == attrib.colors.size());
- TEST_CHECK(FloatEquals(0.0f, attrib.colors[3 * 0 + 0]));
- TEST_CHECK(FloatEquals(0.0f, attrib.colors[3 * 0 + 1]));
- TEST_CHECK(FloatEquals(0.0f, attrib.colors[3 * 0 + 2]));
+ TEST_CHECK(FloatEquals(0.0, attrib.colors[3 * 0 + 0]));
+ TEST_CHECK(FloatEquals(0.0, attrib.colors[3 * 0 + 1]));
+ TEST_CHECK(FloatEquals(0.0, attrib.colors[3 * 0 + 2]));
- TEST_CHECK(FloatEquals(0.0f, attrib.colors[3 * 1 + 0]));
- TEST_CHECK(FloatEquals(0.0f, attrib.colors[3 * 1 + 1]));
- TEST_CHECK(FloatEquals(1.0f, attrib.colors[3 * 1 + 2]));
+ TEST_CHECK(FloatEquals(0.0, attrib.colors[3 * 1 + 0]));
+ TEST_CHECK(FloatEquals(0.0, attrib.colors[3 * 1 + 1]));
+ TEST_CHECK(FloatEquals(1.0, attrib.colors[3 * 1 + 2]));
- TEST_CHECK(FloatEquals(1.0f, attrib.colors[3 * 4 + 0]));
+ TEST_CHECK(FloatEquals(1.0, attrib.colors[3 * 4 + 0]));
- TEST_CHECK(FloatEquals(1.0f, attrib.colors[3 * 7 + 0]));
- TEST_CHECK(FloatEquals(1.0f, attrib.colors[3 * 7 + 1]));
- TEST_CHECK(FloatEquals(1.0f, attrib.colors[3 * 7 + 2]));
+ TEST_CHECK(FloatEquals(1.0, attrib.colors[3 * 7 + 0]));
+ TEST_CHECK(FloatEquals(1.0, attrib.colors[3 * 7 + 1]));
+ TEST_CHECK(FloatEquals(1.0, attrib.colors[3 * 7 + 2]));
}
void test_norm_texopts() {
@@ -833,7 +832,7 @@ void test_norm_texopts() {
TEST_CHECK(true == ret);
TEST_CHECK(1 == shapes.size());
TEST_CHECK(1 == materials.size());
- TEST_CHECK(FloatEquals(3.0f, materials[0].normal_texopt.bump_multiplier));
+ TEST_CHECK(FloatEquals(3.0, materials[0].normal_texopt.bump_multiplier));
}
void test_zero_face_idx_value_issue140() {
@@ -927,7 +926,7 @@ void test_texture_name_whitespace_issue145() {
TEST_CHECK(0 == materials[0].diffuse_texname.compare("texture 01.png"));
TEST_CHECK(0 == materials[1].bump_texname.compare("bump 01.png"));
- TEST_CHECK(FloatEquals(2.0f, materials[1].bump_texopt.bump_multiplier));
+ TEST_CHECK(FloatEquals(2.0, materials[1].bump_texopt.bump_multiplier));
}
void test_smoothing_group_issue162() {
@@ -1187,11 +1186,11 @@ void test_leading_decimal_dots_issue201() {
TEST_CHECK(true == ret);
TEST_CHECK(1 == shapes.size());
TEST_CHECK(1 == materials.size());
- TEST_CHECK(FloatEquals(0.8e-1f, attrib.vertices[0]));
- TEST_CHECK(FloatEquals(-.7e+2f, attrib.vertices[1]));
- TEST_CHECK(FloatEquals(.575869f, attrib.vertices[3]));
- TEST_CHECK(FloatEquals(-.666304f, attrib.vertices[4]));
- TEST_CHECK(FloatEquals(.940448f, attrib.vertices[6]));
+ TEST_CHECK(FloatEquals(0.8e-1, attrib.vertices[0]));
+ TEST_CHECK(FloatEquals(-.7e+2, attrib.vertices[1]));
+ TEST_CHECK(FloatEquals(.575869, attrib.vertices[3]));
+ TEST_CHECK(FloatEquals(-.666304, attrib.vertices[4]));
+ TEST_CHECK(FloatEquals(.940448, attrib.vertices[6]));
}
void test_mtl_default_search_path_v2_API_issue208() {
@@ -1228,8 +1227,8 @@ void test_leading_zero_in_exponent_notation_issue210() {
TEST_CHECK(true == ret);
TEST_CHECK(1 == shapes.size());
TEST_CHECK(1 == materials.size());
- TEST_CHECK(FloatEquals(0.8e-001f, attrib.vertices[0]));
- TEST_CHECK(FloatEquals(-.7e+02f, attrib.vertices[1]));
+ TEST_CHECK(FloatEquals(0.8e-001, attrib.vertices[0]));
+ TEST_CHECK(FloatEquals(-.7e+02, attrib.vertices[1]));
std::cout << "exp " << 0.8e-01 << std::endl;
std::cout << "bora " << attrib.vertices[0] << std::endl;
|