8#ifndef BEAST_UNIT_TEST_SUITE_HPP
9#define BEAST_UNIT_TEST_SUITE_HPP
11#include <xrpl/beast/unit_test/runner.h>
13#include <boost/filesystem.hpp>
14#include <boost/lexical_cast.hpp>
15#include <boost/throw_exception.hpp>
26template <
class String>
33 namespace fs = boost::filesystem;
34 s.
append(fs::path{file}.filename().
string());
36 s.
append(boost::lexical_cast<std::string>(line));
66 what() const noexcept
override
68 return "test suite aborted";
72 template <
class CharT,
class Traits,
class Allocator>
90 auto const& s = this->
str();
113 class scoped_testcase;
182 template <
class =
void>
187 template <
class =
void>
200 template <
class String>
202 fail(String
const& reason,
char const* file,
int line);
204 template <
class =
void>
227 template <
class Condition>
231 return expect(shouldBeTrue,
"");
234 template <
class Condition,
class String>
236 expect(Condition
const& shouldBeTrue, String
const& reason);
238 template <
class Condition>
240 expect(Condition
const& shouldBeTrue,
char const* file,
int line)
242 return expect(shouldBeTrue,
"", file, line);
245 template <
class Condition,
class String>
248 Condition
const& shouldBeTrue,
249 String
const& reason,
258 template <
class F,
class String>
260 except(F&& f, String
const& reason);
267 template <
class E,
class F,
class String>
269 except(F&& f, String
const& reason);
270 template <
class E,
class F>
274 return except<E>(f,
"");
276 template <
class F,
class String>
278 unexcept(F&& f, String
const& reason);
295 template <
class Condition,
class String>
297 unexpected(Condition shouldBeFalse, String
const& reason);
299 template <
class Condition>
312 static suite* pts =
nullptr;
323 template <
class =
void>
343 auto const& name =
ss_.
str();
385 return {suite_, ss_};
392 return {suite_, ss_, t};
414template <
class Condition,
class String>
427template <
class Condition,
class String>
430 Condition
const& shouldBeTrue,
431 String
const& reason,
446template <
class F,
class String>
463template <
class E,
class F,
class String>
480template <
class F,
class String>
497template <
class Condition,
class String>
501 bool const b =
static_cast<bool>(shouldBeFalse);
531template <
class String>
574#define BEAST_EXPECT(cond) expect(cond, __FILE__, __LINE__)
582#define BEAST_EXPECTS(cond, reason) \
583 ((cond) ? (pass(), true) : (fail((reason), __FILE__, __LINE__), false))
593#define BEAST_DEFINE_TESTSUITE_INSERT( \
594 Class, Module, Library, manual, priority) \
595 static beast::unit_test::detail::insert_suite<Class##_test> \
596 Library##Module##Class##_test_instance( \
597 #Class, #Module, #Library, manual, priority)
606#ifndef BEAST_DEFINE_TESTSUITE
613#ifndef BEAST_NO_UNIT_TEST_INLINE
614#define BEAST_NO_UNIT_TEST_INLINE 0
644#if BEAST_NO_UNIT_TEST_INLINE
645#define BEAST_DEFINE_TESTSUITE(Class, Module, Library)
646#define BEAST_DEFINE_TESTSUITE_MANUAL(Class, Module, Library)
647#define BEAST_DEFINE_TESTSUITE_PRIO(Class, Module, Library, Priority)
648#define BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(Class, Module, Library, Priority)
651#include <xrpl/beast/unit_test/global_suites.h>
652#define BEAST_DEFINE_TESTSUITE(Class, Module, Library) \
653 BEAST_DEFINE_TESTSUITE_INSERT(Class, Module, Library, false, 0)
654#define BEAST_DEFINE_TESTSUITE_MANUAL(Class, Module, Library) \
655 BEAST_DEFINE_TESTSUITE_INSERT(Class, Module, Library, true, 0)
656#define BEAST_DEFINE_TESTSUITE_PRIO(Class, Module, Library, Priority) \
657 BEAST_DEFINE_TESTSUITE_INSERT(Class, Module, Library, false, Priority)
658#define BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(Class, Module, Library, Priority) \
659 BEAST_DEFINE_TESTSUITE_INSERT(Class, Module, Library, true, Priority)
Unit test runner interface.
void log(std::string const &s)
void arg(std::string const &s)
Set the argument string.
void fail(std::string const &reason)
void testcase(std::string const &name)
log_buf< CharT, Traits, Allocator > buf_
scoped_testcase & operator<<(T const &t)
scoped_testcase & operator=(scoped_testcase const &)=delete
scoped_testcase(suite &self, std::stringstream &ss, T const &t)
scoped_testcase(suite &self, std::stringstream &ss)
scoped_testcase operator<<(T const &t)
void operator()(std::string const &name, abort_t abort=no_abort_on_fail)
Open a new testcase.
log_os< char > log
Logging output stream.
bool expect(Condition const &shouldBeTrue, char const *file, int line)
suite & operator=(suite const &)=delete
void pass()
Record a successful test condition.
static suite * this_suite()
Returns the "current" running suite.
void operator()(runner &r)
Invokes the test using the specified runner.
static suite ** p_this_suite()
bool unexpected(Condition shouldBeFalse)
bool unexpected(Condition shouldBeFalse, String const &reason)
testcase_t testcase
Memberspace for declaring test cases.
std::string const & arg() const
Return the argument associated with the runner.
bool unexcept(F &&f, String const &reason)
bool expect(Condition const &shouldBeTrue)
Evaluate a test condition.
suite(suite const &)=delete
bool except(F &&f, String const &reason)
virtual void run()=0
Runs the suite.
void fail(String const &reason, char const *file, int line)
Record a failure.
Replacement for std::thread that handles exceptions in unit tests.
static std::string make_reason(String const &reason, char const *file, int line)
char const * what() const noexcept override