Skip to content

Commit 7bfb2e4

Browse files
committed
Handle and run unit tests
1 parent f143aad commit 7bfb2e4

File tree

10 files changed

+37
-37
lines changed

10 files changed

+37
-37
lines changed

modules/mrpt_common/CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,13 @@ if ((NOT DETECTED_ROS2) AND (NOT DETECTED_ROS1))
8686
DESTINATION
8787
share/${PROJECT_NAME}/cmake
8888
)
89+
install(
90+
DIRECTORY
91+
${CMAKE_SOURCE_DIR}/common_sources
92+
${CMAKE_SOURCE_DIR}/common_headers
93+
DESTINATION
94+
share/${PROJECT_NAME}/
95+
)
8996

9097
# Provide make uninstall:
9198
if (NOT TARGET uninstall)

modules/mrpt_common/cmake/mrpt_cmake_functions.cmake

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
include(GNUInstallDirs) # for install dirs in multilib
1111
include(CMakePackageConfigHelpers)
1212

13+
find_package(GTest QUIET)
14+
1315
# This file defines utility CMake functions to ensure uniform settings all
1416
# accross MRPT modules, programs, and tests.
1517
# Usage:
@@ -408,12 +410,13 @@ function(mrpt_add_library)
408410
keep_matching_files_from_list(".*_unittest.cpp" lst_unittests)
409411
if(NOT "${lst_unittests}" STREQUAL "")
410412
# We have unit tests:
411-
get_property(_lst_lib_test GLOBAL PROPERTY "MRPT_TEST_LIBS")
412-
set_property(GLOBAL PROPERTY "MRPT_TEST_LIBS" ${_lst_lib_test} mrpt_${name})
413-
set_property(GLOBAL PROPERTY "${MRPT_ADD_LIBRARY_TARGET}_UNIT_TEST_FILES" ${lst_unittests})
413+
mrpt_add_test(
414+
TARGET test_${MRPT_ADD_LIBRARY_TARGET}
415+
SOURCES ${lst_unittests}
416+
LINK_LIBRARIES ${MRPT_ADD_LIBRARY_TARGET}
417+
)
414418
endif()
415419

416-
417420
# Enable SIMD especial instructions in especialized source files, even if
418421
# those instructions are NOT enabled globally for the entire build:
419422
handle_special_simd_flags("${MRPT_ADD_LIBRARY_SOURCES}" ".*\.SSE2.cpp" "-msse2")
@@ -506,27 +509,35 @@ function(mrpt_add_test)
506509
set(multiValueArgs SOURCES LINK_LIBRARIES)
507510
cmake_parse_arguments(MRPT_ADD_TEST "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
508511

512+
enable_testing()
509513
add_executable(${MRPT_ADD_TEST_TARGET}
510514
${MRPT_ADD_TEST_SOURCES}
515+
${mrpt_common_DIR}/../common_sources/mrpt_test_main.cpp
511516
)
512517

513518
# Define common flags:
514519
mrpt_set_target_build_options(${MRPT_ADD_TEST_TARGET})
515520
mrpt_configure_app(${MRPT_ADD_TEST_TARGET})
516521

517522
# lib Dependencies:
518-
if (MRPT_ADD_TEST_LINK_LIBRARIES)
519-
target_link_libraries(
523+
target_link_libraries(
520524
${MRPT_ADD_TEST_TARGET}
521525
${MRPT_ADD_TEST_LINK_LIBRARIES}
522-
)
523-
endif()
526+
Threads::Threads
527+
GTest::GTest
528+
)
524529

525-
# Macro for source dir path:
526-
target_compile_definitions(${MRPT_ADD_TEST_TARGET} PRIVATE
527-
MRPT_MODULE_SOURCE_DIR=\"${CMAKE_CURRENT_SOURCE_DIR}\"
528-
)
530+
# Make common_headers visible:
531+
target_include_directories(${MRPT_ADD_TEST_TARGET} PRIVATE ${mrpt_common_DIR}/../common_headers/)
529532

533+
# Macro for source dir path:
534+
if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "Emscripten")
535+
target_compile_definitions(${MRPT_ADD_TEST_TARGET} PRIVATE CMAKE_UNITTEST_BASEDIR="${CMAKE_SOURCE_DIR}")
536+
else()
537+
# Use relative paths for embedded files:
538+
target_compile_definitions(${MRPT_ADD_TEST_TARGET} PRIVATE CMAKE_UNITTEST_BASEDIR=".")
539+
endif()
540+
530541
# Run it:
531542
#add_custom_target(run_${MRPT_ADD_TEST_TARGET} COMMAND $<TARGET_FILE:${MRPT_ADD_TEST_TARGET}>)
532543
add_test(${MRPT_ADD_TEST_TARGET}_build "${CMAKE_COMMAND}" --build ${CMAKE_CURRENT_BINARY_DIR} --target ${MRPT_ADD_TEST_TARGET})
File renamed without changes.
File renamed without changes.
File renamed without changes.

modules/mrpt_core/include/mrpt/core/round.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ inline long round_long(const T value)
5858
template <class T>
5959
T round_10power(T val, int power10)
6060
{
61-
long double F = ::pow((long double)10.0, -(long double)power10);
61+
long double F =
62+
std::pow<long double>(static_cast<long double>(10.0), -static_cast<long double>(power10));
6263
long int t = round_long(val * F);
6364
return T(t / F);
6465
}

modules/mrpt_core/src/constexpr_for_unittest.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
TEST(constexpr_for, compileTest)
1414
{
15-
int s = 0;
15+
std::size_t s = 0;
1616
mrpt::for_<10>([&](auto i) { s += i.value; });
17-
EXPECT_EQ(s, 10 * 9 / 2);
17+
EXPECT_EQ(s, static_cast<size_t>((10 / 2) * 9));
1818
}

modules/mrpt_core/src/exception_unittest.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,9 @@ TEST(exception, assertMacros)
122122
EXPECT_NO_THROW(ASSERT_NEAR_(1, 1, 0));
123123
EXPECT_ANY_THROW(ASSERT_NEAR_(1, 2, 0));
124124
EXPECT_ANY_THROW(ASSERT_NEAR_(10.0, 10.01, 0.001));
125-
EXPECT_ANY_THROW(ASSERT_NEAR_(10.0, 10.01f, 0.001));
126-
EXPECT_ANY_THROW(ASSERT_NEAR_(10.0, 10.01f, 0.001f));
127-
EXPECT_ANY_THROW(ASSERT_NEAR_(10.0f, 10.01, 0.001f));
128-
EXPECT_NO_THROW(ASSERT_NEAR_(10.0, 10.01f, 0.1));
129-
EXPECT_NO_THROW(ASSERT_NEAR_(10.0f, 10.01f, 0.1));
130-
EXPECT_NO_THROW(ASSERT_NEAR_(10.0f, 10.01, 0.1));
131-
EXPECT_NO_THROW(ASSERT_NEAR_(10.0, 10.01f, 0.1f));
125+
EXPECT_ANY_THROW(ASSERT_NEAR_(10.0f, 10.01f, 0.001f));
126+
EXPECT_NO_THROW(ASSERT_NEAR_(10.0, 10.01, 0.1));
127+
EXPECT_NO_THROW(ASSERT_NEAR_(10.0f, 10.01f, 0.1f));
132128

133129
const std::array<double, 2> arr_dc = {10.0, 10.01};
134130
std::array<double, 2> arr_dnc = {10.0, 10.01};

tests/CMakeLists.txt

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,6 @@ include_directories("${MRPT_SOURCE_DIR}/tests/include")
3636
# Tests based on Google gtest:
3737
# -----------------------------
3838

39-
# Include gtest from embedded lib:
40-
if (NOT CMAKE_MRPT_HAS_GTEST_SYSTEM)
41-
include_directories("${CMAKE_MRPT_GTEST_SRC_DIR}/include/")
42-
endif()
43-
44-
# If using system library, add C++ flags:
45-
if (NOT "${CMAKE_GTEST_CFLAGS}" STREQUAL "")
46-
add_definitions(${CMAKE_GTEST_CFLAGS})
47-
endif ()
48-
49-
if(MSVC)
50-
# avoid MSVC pedantic warning on tr1. See: https://github.com/google/googletest/issues/1111
51-
add_definitions(/D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING)
52-
endif()
53-
5439
get_property(LST_LIB_TESTS GLOBAL PROPERTY "MRPT_TEST_LIBS")
5540
foreach(_TSTLIB ${LST_LIB_TESTS})
5641
string(REGEX REPLACE "mrpt_(.*)" "mrpt-\\1" _TSTLIB_DASH ${_TSTLIB})

0 commit comments

Comments
 (0)