From cad2590bc7e89b578d1a8ceb21733d7107e1e341 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Tue, 20 Jul 2021 14:53:23 +0300 Subject: [PATCH] Fix tests --- libs/util/tests/heterogeneous_container.cpp | 12 ++++++------ tools/test/CMakeLists.txt | 4 +++- tools/test/include/psemek/test/test.hpp | 2 ++ 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/libs/util/tests/heterogeneous_container.cpp b/libs/util/tests/heterogeneous_container.cpp index 6830b04c..42f3983e 100644 --- a/libs/util/tests/heterogeneous_container.cpp +++ b/libs/util/tests/heterogeneous_container.cpp @@ -81,20 +81,20 @@ test_case(util_heterogeneous__container_get) auto c0 = c.insert('0'); expect_equal(c.get(c0), '0'); expect_equal(c.get(c0).index(), 0); - expect_equal(std::get<0>(c.get(c0)), '0'); - expect_equal(std::get(c.get(c0)), '0'); + expect_equal_deref(std::get<0>(c.get(c0)), '0'); + expect_equal_deref(std::get(c.get(c0)), '0'); auto c1 = c.insert('1'); expect_equal(c.get(c1), '1'); expect_equal(c.get(c1).index(), 0); - expect_equal(std::get<0>(c.get(c1)), '1'); - expect_equal(std::get(c.get(c1)), '1'); + expect_equal_deref(std::get<0>(c.get(c1)), '1'); + expect_equal_deref(std::get(c.get(c1)), '1'); auto f0 = c.insert(3.14f); expect_equal(c.get(f0), 3.14f); expect_equal(c.get(f0).index(), 2); - expect_equal(std::get<2>(c.get(f0)), 3.14f); - expect_equal(std::get(c.get(f0)), 3.14f); + expect_equal_deref(std::get<2>(c.get(f0)), 3.14f); + expect_equal_deref(std::get(c.get(f0)), 3.14f); expect_throw(c.get(c0), std::bad_any_cast); expect_throw(c.get(c1), std::bad_any_cast); diff --git a/tools/test/CMakeLists.txt b/tools/test/CMakeLists.txt index 94d0a861..fe37bb5c 100644 --- a/tools/test/CMakeLists.txt +++ b/tools/test/CMakeLists.txt @@ -1,5 +1,7 @@ option(PSEMEK_BUILD_TESTS "Build tests" OFF) +cmake_policy(SET CMP0079 NEW) + if(PSEMEK_BUILD_TESTS) add_executable(psemek-run-tests source/main.cpp include/psemek/test/test.hpp) @@ -7,7 +9,7 @@ if(PSEMEK_BUILD_TESTS) target_include_directories(psemek-run-tests PUBLIC "${PSEMEK_TESTS_INCLUDE_DIR}") function(psemek_glob_tests lib dir) - file(GLOB_RECURSE _PSEMEK_ADD_TESTS_SOURCES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${dir}/*.cpp") + file(GLOB_RECURSE _PSEMEK_ADD_TESTS_SOURCES "${dir}/*.cpp") list(LENGTH _PSEMEK_ADD_TESTS_SOURCES _PSEMEK_ADD_TESTS_SOURCES_LENGTH) if(_PSEMEK_ADD_TESTS_SOURCES_LENGTH EQUAL 0) message(WARNING "No tests found in ${dir}") diff --git a/tools/test/include/psemek/test/test.hpp b/tools/test/include/psemek/test/test.hpp index d60b711e..a0d9a1f0 100644 --- a/tools/test/include/psemek/test/test.hpp +++ b/tools/test/include/psemek/test/test.hpp @@ -90,6 +90,8 @@ void name ## _test_case ([[maybe_unused]] ::psemek::test::context & _ctx) #define expect_equal_ptr(expr1, expr2) if ((expr1) != (expr2)) psemek_test_fail(#expr1, " (", (void*)(expr1), ") != ", #expr2, " (", (void*)(expr2), ")") +#define expect_equal_deref(expr_ptr, expr_val) if (!(expr_ptr)) psemek_test_fail(#expr_ptr, " == nullptr"); else expect_equal(*expr_ptr, expr_val) + #define expect_different(expr1, expr2) if ((expr1) == (expr2)) psemek_test_fail(#expr1, " (", (expr1), ") == ", #expr2, " (", (expr2), ")") #define expect_different_ptr(expr1, expr2) if ((expr1) == (expr2)) psemek_test_fail(#expr1, " (", (void*)(expr1), ") == ", #expr2, " (", (void*)(expr2), ")")