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();
108 class scoped_testcase;
177 template <
class =
void>
182 template <
class =
void>
195 template <
class String>
197 fail(String
const& reason,
char const* file,
int line);
199 template <
class =
void>
222 template <
class Condition>
226 return expect(shouldBeTrue,
"");
229 template <
class Condition,
class String>
231 expect(Condition
const& shouldBeTrue, String
const& reason);
233 template <
class Condition>
235 expect(Condition
const& shouldBeTrue,
char const* file,
int line)
237 return expect(shouldBeTrue,
"", file, line);
240 template <
class Condition,
class String>
242 expect(Condition
const& shouldBeTrue, String
const& reason,
char const* file,
int line);
249 template <
class F,
class String>
251 except(F&& f, String
const& reason);
258 template <
class E,
class F,
class String>
260 except(F&& f, String
const& reason);
261 template <
class E,
class F>
265 return except<E>(f,
"");
267 template <
class F,
class String>
269 unexcept(F&& f, String
const& reason);
286 template <
class Condition,
class String>
288 unexpected(Condition shouldBeFalse, String
const& reason);
290 template <
class Condition>
303 static suite* pts =
nullptr;
314 template <
class =
void>
334 auto const& name =
ss_.
str();
375 return {suite_, ss_};
382 return {suite_, ss_, t};
404template <
class Condition,
class String>
417template <
class Condition,
class String>
419suite::expect(Condition
const& shouldBeTrue, String
const& reason,
char const* file,
int line)
432template <
class F,
class String>
449template <
class E,
class F,
class String>
466template <
class F,
class String>
483template <
class Condition,
class String>
487 bool const b =
static_cast<bool>(shouldBeFalse);
517template <
class String>
560#define BEAST_EXPECT(cond) expect(cond, __FILE__, __LINE__)
568#define BEAST_EXPECTS(cond, reason) \
569 ((cond) ? (pass(), true) : (fail((reason), __FILE__, __LINE__), false))
579#define BEAST_DEFINE_TESTSUITE_INSERT(Class, Module, Library, manual, priority) \
580 static beast::unit_test::detail::insert_suite<Class##_test> \
581 Library##Module##Class##_test_instance(#Class, #Module, #Library, manual, priority)
590#ifndef BEAST_DEFINE_TESTSUITE
597#ifndef BEAST_NO_UNIT_TEST_INLINE
598#define BEAST_NO_UNIT_TEST_INLINE 0
628#if BEAST_NO_UNIT_TEST_INLINE
629#define BEAST_DEFINE_TESTSUITE(Class, Module, Library)
630#define BEAST_DEFINE_TESTSUITE_MANUAL(Class, Module, Library)
631#define BEAST_DEFINE_TESTSUITE_PRIO(Class, Module, Library, Priority)
632#define BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(Class, Module, Library, Priority)
635#include <xrpl/beast/unit_test/global_suites.h>
636#define BEAST_DEFINE_TESTSUITE(Class, Module, Library) \
637 BEAST_DEFINE_TESTSUITE_INSERT(Class, Module, Library, false, 0)
638#define BEAST_DEFINE_TESTSUITE_MANUAL(Class, Module, Library) \
639 BEAST_DEFINE_TESTSUITE_INSERT(Class, Module, Library, true, 0)
640#define BEAST_DEFINE_TESTSUITE_PRIO(Class, Module, Library, Priority) \
641 BEAST_DEFINE_TESTSUITE_INSERT(Class, Module, Library, false, Priority)
642#define BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(Class, Module, Library, Priority) \
643 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