tap: consolidate expect_* functions
This commit is contained in:
parent
5ee3d14811
commit
7f5533ff35
15
tap.hpp
15
tap.hpp
@ -32,19 +32,21 @@ namespace util { namespace TAP {
|
||||
TODO
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
logger ();
|
||||
~logger ();
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
void expect (bool, const std::string &msg);
|
||||
|
||||
template <typename T, typename U>
|
||||
void expect (std::function<bool(const T&, const U&)> test, const T&, const U&, const std::string &msg);
|
||||
template <typename ...Args>
|
||||
void expect (std::function<bool(Args...)>, Args&&..., const std::string& msg);
|
||||
|
||||
template <typename T, typename U>
|
||||
void expect_eq (const T&, const U&, const std::string &msg = "equality");
|
||||
template <typename T, typename U>
|
||||
void expect_neq (const T&, const U&, const std::string &msg = "inequality");
|
||||
//---------------------------------------------------------------------
|
||||
template <typename T, typename U> void expect_eq (const T&, const U&, const std::string &msg = "equality");
|
||||
template <typename T, typename U> void expect_neq (const T&, const U&, const std::string &msg = "inequality");
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
template <typename T, typename U> void expect_gt (const T&, const U&, const std::string &msg = "gt");
|
||||
template <typename T, typename U> void expect_ge (const T&, const U&, const std::string &msg = "ge");
|
||||
template <typename T, typename U> void expect_lt (const T&, const U&, const std::string &msg = "lt");
|
||||
@ -54,6 +56,7 @@ namespace util { namespace TAP {
|
||||
void todo (const std::string &msg);
|
||||
void noop (void);
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
int status (void) const;
|
||||
|
||||
private:
|
||||
|
31
tap.ipp
31
tap.ipp
@ -24,27 +24,26 @@
|
||||
#include <cstdlib>
|
||||
#include <algorithm>
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
template <typename T, typename U>
|
||||
void
|
||||
util::TAP::logger::expect (std::function<bool(const T&, const U&)> test,
|
||||
const T &a,
|
||||
const U &b,
|
||||
const std::string &msg)
|
||||
{
|
||||
bool success = test (a, b);
|
||||
std::cout << (success ? "ok " : "not ok ") << ++m_size << " - " << msg << '\n';
|
||||
|
||||
if (!success)
|
||||
m_status = EXIT_FAILURE;
|
||||
//-----------------------------------------------------------------------------
|
||||
template <typename... Args>
|
||||
void
|
||||
util::TAP::logger::expect (std::function<bool(Args...)> test, Args&&... args, const std::string &msg)
|
||||
{
|
||||
expect (test (std::forward<Args> (args)...), msg);
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
template <typename T, typename U>
|
||||
void
|
||||
util::TAP::logger::expect_eq (const T&a, const U &b, const std::string &msg)
|
||||
{
|
||||
expect (almost_equal<T,U>, a, b, msg);
|
||||
static const auto TEST = [] (const T &t, const U &u) -> bool {
|
||||
return almost_equal (t, u);
|
||||
};
|
||||
|
||||
expect<const T&, const U&> (TEST, a, b, msg);
|
||||
}
|
||||
|
||||
|
||||
@ -53,11 +52,11 @@ template <typename T, typename U>
|
||||
void
|
||||
util::TAP::logger::expect_neq (const T&a, const U &b, const std::string &msg)
|
||||
{
|
||||
static const std::function<bool(const T&, const U&)> TEST = [] (const T &t, const U &u) -> bool {
|
||||
static const auto TEST = [] (const T &t, const U &u) -> bool {
|
||||
return !almost_equal (t, u);
|
||||
};
|
||||
|
||||
expect (TEST, a, b, msg);
|
||||
expect<const T&, const U&> (TEST, a, b, msg);
|
||||
}
|
||||
|
||||
|
||||
@ -69,7 +68,7 @@ util::TAP::logger::expect_ ## SUFFIX (const T &a, \
|
||||
const U &b, \
|
||||
const std::string &msg) \
|
||||
{ \
|
||||
std::cout << ((a OP b) ? "ok " : "not ok ") << ++m_size << " - " << msg << '\n'; \
|
||||
expect<const T&, const U&> ([] (const T&t, const U&u) { return t OP u; }, a, b, msg); \
|
||||
}
|
||||
|
||||
TAP_TEST(gt, > )
|
||||
|
Loading…
Reference in New Issue
Block a user