5#ifndef BEAST_UNIT_TEST_SUITE_HPP
6#define BEAST_UNIT_TEST_SUITE_HPP
8#include <xrpl/beast/unit_test/runner.h>
10#include <boost/filesystem.hpp>
11#include <boost/lexical_cast.hpp>
12#include <boost/throw_exception.hpp>
23template <
class String>
30 namespace fs = boost::filesystem;
31 s.
append(fs::path{file}.filename().
string());
33 s.
append(boost::lexical_cast<std::string>(line));
63 what() const noexcept
override
65 return "test suite aborted";
69 template <
class CharT,
class Traits,
class Allocator>
87 auto const& s = this->
str();
110 class scoped_testcase;
179 template <
class =
void>
184 template <
class =
void>
197 template <
class String>
199 fail(String
const& reason,
char const* file,
int line);
201 template <
class =
void>
224 template <
class Condition>
228 return expect(shouldBeTrue,
"");
231 template <
class Condition,
class String>
233 expect(Condition
const& shouldBeTrue, String
const& reason);
235 template <
class Condition>
237 expect(Condition
const& shouldBeTrue,
char const* file,
int line)
239 return expect(shouldBeTrue,
"", file, line);
242 template <
class Condition,
class String>
245 Condition
const& shouldBeTrue,
246 String
const& reason,
255 template <
class F,
class String>
257 except(F&& f, String
const& reason);
264 template <
class E,
class F,
class String>
266 except(F&& f, String
const& reason);
267 template <
class E,
class F>
271 return except<E>(f,
"");
273 template <
class F,
class String>
275 unexcept(F&& f, String
const& reason);
292 template <
class Condition,
class String>
294 unexpected(Condition shouldBeFalse, String
const& reason);
296 template <
class Condition>
309 static suite* pts =
nullptr;
320 template <
class =
void>
340 auto const& name =
ss_.
str();
382 return {suite_, ss_};
389 return {suite_, ss_, t};
411template <
class Condition,
class String>
424template <
class Condition,
class String>
427 Condition
const& shouldBeTrue,
428 String
const& reason,
443template <
class F,
class String>
460template <
class E,
class F,
class String>
477template <
class F,
class String>
494template <
class Condition,
class String>
498 bool const b =
static_cast<bool>(shouldBeFalse);
528template <
class String>
571#define BEAST_EXPECT(cond) expect(cond, __FILE__, __LINE__)
579#define BEAST_EXPECTS(cond, reason) \
580 ((cond) ? (pass(), true) : (fail((reason), __FILE__, __LINE__), false))
590#define BEAST_DEFINE_TESTSUITE_INSERT( \
591 Class, Module, Library, manual, priority) \
592 static beast::unit_test::detail::insert_suite<Class##_test> \
593 Library##Module##Class##_test_instance( \
594 #Class, #Module, #Library, manual, priority)
603#ifndef BEAST_DEFINE_TESTSUITE
610#ifndef BEAST_NO_UNIT_TEST_INLINE
611#define BEAST_NO_UNIT_TEST_INLINE 0
641#if BEAST_NO_UNIT_TEST_INLINE
642#define BEAST_DEFINE_TESTSUITE(Class, Module, Library)
643#define BEAST_DEFINE_TESTSUITE_MANUAL(Class, Module, Library)
644#define BEAST_DEFINE_TESTSUITE_PRIO(Class, Module, Library, Priority)
645#define BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(Class, Module, Library, Priority)
648#include <xrpl/beast/unit_test/global_suites.h>
649#define BEAST_DEFINE_TESTSUITE(Class, Module, Library) \
650 BEAST_DEFINE_TESTSUITE_INSERT(Class, Module, Library, false, 0)
651#define BEAST_DEFINE_TESTSUITE_MANUAL(Class, Module, Library) \
652 BEAST_DEFINE_TESTSUITE_INSERT(Class, Module, Library, true, 0)
653#define BEAST_DEFINE_TESTSUITE_PRIO(Class, Module, Library, Priority) \
654 BEAST_DEFINE_TESTSUITE_INSERT(Class, Module, Library, false, Priority)
655#define BEAST_DEFINE_TESTSUITE_MANUAL_PRIO(Class, Module, Library, Priority) \
656 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