Fix tests

This commit is contained in:
Nikita Lisitsa 2021-07-20 14:53:23 +03:00
parent 21d6076f5c
commit cad2590bc7
3 changed files with 11 additions and 7 deletions

View file

@ -81,20 +81,20 @@ test_case(util_heterogeneous__container_get)
auto c0 = c.insert('0');
expect_equal(c.get<char>(c0), '0');
expect_equal(c.get(c0).index(), 0);
expect_equal(std::get<0>(c.get(c0)), '0');
expect_equal(std::get<char>(c.get(c0)), '0');
expect_equal_deref(std::get<0>(c.get(c0)), '0');
expect_equal_deref(std::get<char *>(c.get(c0)), '0');
auto c1 = c.insert('1');
expect_equal(c.get<char>(c1), '1');
expect_equal(c.get(c1).index(), 0);
expect_equal(std::get<0>(c.get(c1)), '1');
expect_equal(std::get<char>(c.get(c1)), '1');
expect_equal_deref(std::get<0>(c.get(c1)), '1');
expect_equal_deref(std::get<char *>(c.get(c1)), '1');
auto f0 = c.insert(3.14f);
expect_equal(c.get<float>(f0), 3.14f);
expect_equal(c.get(f0).index(), 2);
expect_equal(std::get<2>(c.get(f0)), 3.14f);
expect_equal(std::get<float>(c.get(f0)), 3.14f);
expect_equal_deref(std::get<2>(c.get(f0)), 3.14f);
expect_equal_deref(std::get<float *>(c.get(f0)), 3.14f);
expect_throw(c.get<float>(c0), std::bad_any_cast);
expect_throw(c.get<float>(c1), std::bad_any_cast);

View file

@ -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}")

View file

@ -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), ")")