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 <utility>
|
||||
#include <tuple>
|
||||
#include <typeinfo>
|
||||
#include <typeindex>
|
||||
|
||||
// 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
|
||||
|
|
@ -38,7 +40,28 @@ std::ostream & operator << (std::ostream & s, std::tuple<Ts...> const & t)
|
|||
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/type_name.hpp>
|
||||
|
||||
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_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_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), ")")
|
||||
|
|
@ -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_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) \
|
||||
if (::psemek::test::profiler name ## _profiler(#name, _ctx); true)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue