tap: add expect_throw, expect_nothrow
This commit is contained in:
parent
75a1f1e5e7
commit
e03d1e57e3
4
tap.hpp
4
tap.hpp
@ -55,6 +55,10 @@ namespace util { namespace TAP {
|
||||
//---------------------------------------------------------------------
|
||||
template <typename T> void expect_nan (const T&, const std::string &msg = "nan");
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
template <typename T> void expect_nothrow (T&&, const std::string &msg = "nothrow");
|
||||
template <typename E, typename T> void expect_throw (T&&, const std::string &msg = "throw");
|
||||
|
||||
//---------------------------------------------------------------------
|
||||
void skip (const std::string &msg);
|
||||
void todo (const std::string &msg);
|
||||
|
38
tap.ipp
38
tap.ipp
@ -68,7 +68,9 @@ util::TAP::logger::expect_ ## SUFFIX (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) { return t OP u; }; \
|
||||
static const std::function< \
|
||||
bool(const T&,const U&) \
|
||||
> TEST = [] (const T&t, const U&u) { return t OP u; }; \
|
||||
expect<const T&, const U&> (TEST, a, b, msg); \
|
||||
}
|
||||
|
||||
@ -88,3 +90,37 @@ util::TAP::logger::expect_nan (const T &t, const std::string &msg)
|
||||
bool(*func)(T) = std::isnan;
|
||||
expect<const T&> (std::function<bool(const T&)> (func), t, msg);
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
template <typename T>
|
||||
void
|
||||
util::TAP::logger::expect_nothrow (T &&t, const std::string &msg)
|
||||
{
|
||||
bool success = true;
|
||||
|
||||
try {
|
||||
t ();
|
||||
} catch (...) {
|
||||
success = false;
|
||||
}
|
||||
|
||||
expect (success, msg);
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
template <typename E, typename T>
|
||||
void
|
||||
util::TAP::logger::expect_throw (T &&t, const std::string &msg)
|
||||
{
|
||||
bool success = false;
|
||||
|
||||
try {
|
||||
t ();
|
||||
} catch (const E&) {
|
||||
success = true;
|
||||
}
|
||||
|
||||
expect (success, msg);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user