7#include <xrpl/beast/unit_test/runner.h>
9#include <boost/throw_exception.hpp>
22template <
class String>
24makeReason(String
const& reason,
char const* file,
int line)
30 s.
append(fs::path{file}.filename().
string());
62 [[nodiscard]]
char const*
63 what() const noexcept
override
65 return "test suite aborted";
69 template <
class CharT,
class Traits,
class Allocator>
87 auto const& s = this->
str();
109 class ScopedTestcase;
184 template <
class =
void>
191 template <
class =
void>
205 template <
class String>
207 fail(String
const& reason,
char const* file,
int line);
209 template <
class =
void>
233 template <
class Condition>
237 return expect(shouldBeTrue,
"");
240 template <
class Condition,
class String>
242 expect(Condition
const& shouldBeTrue, String
const& reason);
244 template <
class Condition>
246 expect(Condition
const& shouldBeTrue,
char const* file,
int line)
248 return expect(shouldBeTrue,
"", file, line);
251 template <
class Condition,
class String>
253 expect(Condition
const& shouldBeTrue, String
const& reason,
char const* file,
int line);
260 template <
class F,
class String>
262 except(F&& f, String
const& reason);
269 template <
class E,
class F,
class String>
271 except(F&& f, String
const& reason);
272 template <
class E,
class F>
278 template <
class F,
class String>
280 unexcept(F&& f, String
const& reason);
315 template <
class Condition,
class String>
317 unexpected(Condition shouldBeFalse, String
const& reason);
319 template <
class Condition>
332 static Suite* kPTs =
nullptr;
345 template <
class =
void>
365 auto const& name =
ss_.str();
367 suite_.runner_->testcase(name);
399 suite_.runner_->testcase(name);
435template <
class Condition,
class String>
448template <
class Condition,
class String>
450Suite::expect(Condition
const& shouldBeTrue, String
const& reason,
char const* file,
int line)
463template <
class F,
class String>
480template <
class E,
class F,
class String>
497template <
class F,
class String>
514template <
class Condition,
class String>
518 bool const b =
static_cast<bool>(shouldBeFalse);
552template <
class String>
586 runner_->fail(
"unhandled exception");
596#define BEAST_EXPECT(cond) expect(cond, __FILE__, __LINE__)
605#define BEAST_EXPECTS(cond, reason) \
606 ((cond) ? (pass(), true) : (fail((reason), __FILE__, __LINE__), false))
615#define BEAST_DEFINE_TESTSUITE_INSERT(Class, Module, Library, manual, priority) \
616 static beast::unit_test::detail::InsertSuite<Class##_test> \
617 Library##Module##Class##_test_instance(#Class, #Module, #Library, manual, priority)
626#ifndef BEAST_DEFINE_TESTSUITE
634#ifndef BEAST_NO_UNIT_TEST_INLINE
635#define BEAST_NO_UNIT_TEST_INLINE 0
666#if BEAST_NO_UNIT_TEST_INLINE
667#define BEAST_DEFINE_TESTSUITE(Class, Module, Library)
668#define BEAST_DEFINE_TESTSUITE_MANUAL(Class, Module, Library)
669#define BEAST_DEFINE_TESTSUITE_PRIO(Class, Module, Library, Priority)
670#define BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(Class, Module, Library, Priority)
673#include <xrpl/beast/unit_test/global_suites.h>
674#define BEAST_DEFINE_TESTSUITE(Class, Module, Library) \
675 BEAST_DEFINE_TESTSUITE_INSERT(Class, Module, Library, false, 0)
676#define BEAST_DEFINE_TESTSUITE_MANUAL(Class, Module, Library) \
677 BEAST_DEFINE_TESTSUITE_INSERT(Class, Module, Library, true, 0)
678#define BEAST_DEFINE_TESTSUITE_PRIO(Class, Module, Library, Priority) \
679 BEAST_DEFINE_TESTSUITE_INSERT(Class, Module, Library, false, Priority)
680#define BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(Class, Module, Library, Priority) \
681 BEAST_DEFINE_TESTSUITE_INSERT(Class, Module, Library, true, Priority)
Unit test runner interface.
LogBuf< CharT, Traits, Allocator > buf_
ScopedTestcase & operator=(ScopedTestcase const &)=delete
ScopedTestcase(Suite &self, std::stringstream &ss)
ScopedTestcase(Suite &self, std::stringstream &ss, T const &t)
ScopedTestcase & operator<<(T const &t)
ScopedTestcase operator<<(T const &t)
void operator()(std::string const &name, AbortT abort=AbortT::NoAbortOnFail)
Open a new testcase.
bool except(F &&f, String const &reason)
bool unexpected(Condition shouldBeFalse, String const &reason)
DEPRECATED.
bool unexcept(F &&f, String const &reason)
void pass()
Record a successful test condition.
void propagateAbort() const
static Suite * thisSuite()
Returns the "current" running suite.
void operator()(Runner &r)
Invokes the test using the specified runner.
Suite & operator=(Suite const &)=delete
bool expect(Condition const &shouldBeTrue)
Evaluate a test condition.
void fail(String const &reason, char const *file, int line)
Record a failure.
bool expect(Condition const &shouldBeTrue, char const *file, int line)
Runner & runner() const
Lets a suite compose other suites (e.g.
Suite(Suite const &)=delete
virtual void run()=0
Runs the suite.
static Suite ** pThisSuite()
LogOs< char > log
Logging output stream.
bool unexpected(Condition shouldBeFalse)
TestcaseT testcase
Memberspace for declaring test cases.
std::string const & arg() const
Return the argument associated with the runner.
static std::string makeReason(String const &reason, char const *file, int line)
char const * what() const noexcept override