7#include <xrpl/beast/unit_test/runner.h>
9#include <boost/filesystem.hpp>
10#include <boost/lexical_cast.hpp>
11#include <boost/throw_exception.hpp>
22template <
class String>
29 namespace fs = boost::filesystem;
30 s.
append(fs::path{file}.filename().
string());
32 s.
append(boost::lexical_cast<std::string>(line));
62 what() const noexcept
override
64 return "test suite aborted";
68 template <
class CharT,
class Traits,
class Allocator>
86 auto const& s = this->
str();
94 template <
class CharT,
class Traits = std::
char_traits<CharT>,
class Allocator = std::allocator<CharT>>
105 class scoped_testcase;
174 template <
class =
void>
179 template <
class =
void>
192 template <
class String>
194 fail(String
const& reason,
char const* file,
int line);
196 template <
class =
void>
219 template <
class Condition>
223 return expect(shouldBeTrue,
"");
226 template <
class Condition,
class String>
228 expect(Condition
const& shouldBeTrue, String
const& reason);
230 template <
class Condition>
232 expect(Condition
const& shouldBeTrue,
char const* file,
int line)
234 return expect(shouldBeTrue,
"", file, line);
237 template <
class Condition,
class String>
239 expect(Condition
const& shouldBeTrue, String
const& reason,
char const* file,
int line);
246 template <
class F,
class String>
248 except(F&& f, String
const& reason);
255 template <
class E,
class F,
class String>
257 except(F&& f, String
const& reason);
258 template <
class E,
class F>
262 return except<E>(f,
"");
264 template <
class F,
class String>
266 unexcept(F&& f, String
const& reason);
283 template <
class Condition,
class String>
285 unexpected(Condition shouldBeFalse, String
const& reason);
287 template <
class Condition>
300 static suite* pts =
nullptr;
311 template <
class =
void>
331 auto const& name =
ss_.
str();
372 return {suite_, ss_};
379 return {suite_, ss_, t};
401template <
class Condition,
class String>
414template <
class Condition,
class String>
416suite::expect(Condition
const& shouldBeTrue, String
const& reason,
char const* file,
int line)
429template <
class F,
class String>
446template <
class E,
class F,
class String>
463template <
class F,
class String>
480template <
class Condition,
class String>
484 bool const b =
static_cast<bool>(shouldBeFalse);
514template <
class String>
557#define BEAST_EXPECT(cond) expect(cond, __FILE__, __LINE__)
565#define BEAST_EXPECTS(cond, reason) ((cond) ? (pass(), true) : (fail((reason), __FILE__, __LINE__), false))
575#define BEAST_DEFINE_TESTSUITE_INSERT(Class, Module, Library, manual, priority) \
576 static beast::unit_test::detail::insert_suite<Class##_test> Library##Module##Class##_test_instance( \
577 #Class, #Module, #Library, manual, priority)
586#ifndef BEAST_DEFINE_TESTSUITE
593#ifndef BEAST_NO_UNIT_TEST_INLINE
594#define BEAST_NO_UNIT_TEST_INLINE 0
624#if BEAST_NO_UNIT_TEST_INLINE
625#define BEAST_DEFINE_TESTSUITE(Class, Module, Library)
626#define BEAST_DEFINE_TESTSUITE_MANUAL(Class, Module, Library)
627#define BEAST_DEFINE_TESTSUITE_PRIO(Class, Module, Library, Priority)
628#define BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(Class, Module, Library, Priority)
631#include <xrpl/beast/unit_test/global_suites.h>
632#define BEAST_DEFINE_TESTSUITE(Class, Module, Library) BEAST_DEFINE_TESTSUITE_INSERT(Class, Module, Library, false, 0)
633#define BEAST_DEFINE_TESTSUITE_MANUAL(Class, Module, Library) \
634 BEAST_DEFINE_TESTSUITE_INSERT(Class, Module, Library, true, 0)
635#define BEAST_DEFINE_TESTSUITE_PRIO(Class, Module, Library, Priority) \
636 BEAST_DEFINE_TESTSUITE_INSERT(Class, Module, Library, false, Priority)
637#define BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(Class, Module, Library, Priority) \
638 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