Add more utilities to tests
This commit is contained in:
parent
327e4b9744
commit
a1f06a57ca
1 changed files with 29 additions and 0 deletions
|
|
@ -7,6 +7,8 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <tuple>
|
#include <tuple>
|
||||||
|
#include <typeinfo>
|
||||||
|
#include <typeindex>
|
||||||
|
|
||||||
// Have to put it before including to_string.hpp due to how unqualified lookup works,
|
// Have to put it before including to_string.hpp due to how unqualified lookup works,
|
||||||
// see e.g. https://alexanderlobov.net/posts/2019-07-08-function-lookup-in-templates
|
// see e.g. https://alexanderlobov.net/posts/2019-07-08-function-lookup-in-templates
|
||||||
|
|
@ -38,7 +40,28 @@ std::ostream & operator << (std::ostream & s, std::tuple<Ts...> const & t)
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace psemek::util
|
||||||
|
{
|
||||||
|
|
||||||
|
std::string type_name(std::type_info const &);
|
||||||
|
std::string type_name(std::type_index const &);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
inline std::ostream & operator << (std::ostream & s, std::type_info const & type)
|
||||||
|
{
|
||||||
|
s << psemek::util::type_name(type);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline std::ostream & operator << (std::ostream & s, std::type_index const & type)
|
||||||
|
{
|
||||||
|
s << psemek::util::type_name(type);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
#include <psemek/util/to_string.hpp>
|
#include <psemek/util/to_string.hpp>
|
||||||
|
#include <psemek/util/type_name.hpp>
|
||||||
|
|
||||||
namespace psemek::test
|
namespace psemek::test
|
||||||
{
|
{
|
||||||
|
|
@ -129,6 +152,10 @@ void name ## _test_case ([[maybe_unused]] ::psemek::test::context & _ctx)
|
||||||
|
|
||||||
#define expect_different_ptr(expr1, expr2) if ((expr1) == (expr2)) psemek_test_fail(#expr1, " (", (void*)(expr1), ") == ", #expr2, " (", (void*)(expr2), ")")
|
#define expect_different_ptr(expr1, expr2) if ((expr1) == (expr2)) psemek_test_fail(#expr1, " (", (void*)(expr1), ") == ", #expr2, " (", (void*)(expr2), ")")
|
||||||
|
|
||||||
|
#define expect_null(expr) expect_equal(expr, nullptr)
|
||||||
|
|
||||||
|
#define expect_non_null(expr) expect_different(expr, nullptr)
|
||||||
|
|
||||||
#define expect_less(expr1, expr2) if ((expr1) >= (expr2)) psemek_test_fail(#expr1, " (", (expr1), ") >= ", #expr2, " (", (expr2), ")")
|
#define expect_less(expr1, expr2) if ((expr1) >= (expr2)) psemek_test_fail(#expr1, " (", (expr1), ") >= ", #expr2, " (", (expr2), ")")
|
||||||
#define expect_lequal(expr1, expr2) if ((expr2) > (expr2)) psemek_test_fail(#expr1, " (", (expr1), ") > ", #expr2, " (", (expr2), ")")
|
#define expect_lequal(expr1, expr2) if ((expr2) > (expr2)) psemek_test_fail(#expr1, " (", (expr1), ") > ", #expr2, " (", (expr2), ")")
|
||||||
#define expect_greater(expr1, expr2) if ((expr1) <= (expr2)) psemek_test_fail(#expr1, " (", (expr1), ") <= ", #expr2, " (", (expr2), ")")
|
#define expect_greater(expr1, expr2) if ((expr1) <= (expr2)) psemek_test_fail(#expr1, " (", (expr1), ") <= ", #expr2, " (", (expr2), ")")
|
||||||
|
|
@ -140,5 +167,7 @@ void name ## _test_case ([[maybe_unused]] ::psemek::test::context & _ctx)
|
||||||
|
|
||||||
#define expect_throw(expr, type) do { bool thrown = false; try { (void)(expr); } catch (type const &) { thrown = true; } if (!thrown) psemek_test_fail(#expr, " didn't throw ", #type); } while (false)
|
#define expect_throw(expr, type) do { bool thrown = false; try { (void)(expr); } catch (type const &) { thrown = true; } if (!thrown) psemek_test_fail(#expr, " didn't throw ", #type); } while (false)
|
||||||
|
|
||||||
|
#define expect_dynamic_type(expr, type) if (!dynamic_cast<type const *>(&expr)) psemek_test_fail("type(", #expr, ") = ", ::psemek::util::type_name(typeid(expr)), " != ", ::psemek::util::type_name<type>())
|
||||||
|
|
||||||
#define test_profile(name) \
|
#define test_profile(name) \
|
||||||
if (::psemek::test::profiler name ## _profiler(#name, _ctx); true)
|
if (::psemek::test::profiler name ## _profiler(#name, _ctx); true)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue