46#if defined(MICRO_OS_PLUS_INCLUDE_CONFIG_H)
47#include <micro-os-plus/config.h>
50#if defined(MICRO_OS_PLUS_TRACE)
51#include <micro-os-plus/diag/trace.h>
61#pragma clang diagnostic ignored "-Wc++98-compat"
62#pragma clang diagnostic ignored "-Wc++98-compat-pedantic"
64#pragma GCC diagnostic ignored "-Wredundant-tags"
65#pragma GCC diagnostic ignored "-Wsuggest-final-types"
66#pragma GCC diagnostic ignored "-Wsuggest-final-methods"
86#if defined(MICRO_OS_PLUS_TRACE) \
87 && defined(MICRO_OS_PLUS_TRACE_MICRO_TEST_PLUS_CONSTRUCTORS)
89#pragma GCC diagnostic push
91#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
94 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name);
96#pragma GCC diagnostic pop
109#if defined(MICRO_OS_PLUS_TRACE) \
110 && defined(MICRO_OS_PLUS_TRACE_MICRO_TEST_PLUS_CONSTRUCTORS)
112#pragma GCC diagnostic push
113#if defined(__clang__)
114#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
117 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
119#pragma GCC diagnostic pop
140#if defined(MICRO_OS_PLUS_TRACE) \
141 && defined(MICRO_OS_PLUS_TRACE_MICRO_TEST_PLUS_CONSTRUCTORS)
143#pragma GCC diagnostic push
144#if defined(__clang__)
145#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
148 trace::printf (
"%s '%s' %zu\n", __PRETTY_FUNCTION__,
name,
own_index_);
150#pragma GCC diagnostic pop
164#if defined(MICRO_OS_PLUS_TRACE) \
165 && defined(MICRO_OS_PLUS_TRACE_MICRO_TEST_PLUS_CONSTRUCTORS)
167#pragma GCC diagnostic push
168#if defined(__clang__)
169#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
172 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
174#pragma GCC diagnostic pop
216 std::unique_ptr<class subtest> child_test,
suite&
suite)
226#if defined(MICRO_OS_PLUS_TRACE) \
227 && defined(MICRO_OS_PLUS_TRACE_MICRO_TEST_PLUS_CONSTRUCTORS)
229#pragma GCC diagnostic push
230#if defined(__clang__)
231#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
234 trace::printf (
"%s subtest '%s' executed one more subtest\n",
235 __PRETTY_FUNCTION__,
name ());
237#pragma GCC diagnostic pop
244#if defined(MICRO_OS_PLUS_TRACE) \
245 && defined(MICRO_OS_PLUS_TRACE_MICRO_TEST_PLUS_CONSTRUCTORS)
247#pragma GCC diagnostic push
248#if defined(__clang__)
249#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
252 trace::printf (
"%s suite '%s' totals\n", __PRETTY_FUNCTION__,
255#pragma GCC diagnostic pop
277#if defined(MICRO_OS_PLUS_TRACE) \
278 && defined(MICRO_OS_PLUS_TRACE_MICRO_TEST_PLUS_CONSTRUCTORS)
280#pragma GCC diagnostic push
281#if defined(__clang__)
282#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
285 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
287#pragma GCC diagnostic pop
300#if defined(MICRO_OS_PLUS_TRACE) \
301 && defined(MICRO_OS_PLUS_TRACE_MICRO_TEST_PLUS)
303#pragma GCC diagnostic push
304#if defined(__clang__)
305#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
308 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
310#pragma GCC diagnostic pop
338#if defined(MICRO_OS_PLUS_TRACE) \
339 && defined(MICRO_OS_PLUS_TRACE_MICRO_TEST_PLUS_CONSTRUCTORS)
341#pragma GCC diagnostic push
342#if defined(__clang__)
343#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
346 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
348#pragma GCC diagnostic pop
361#if defined(MICRO_OS_PLUS_TRACE) \
362 && defined(MICRO_OS_PLUS_TRACE_MICRO_TEST_PLUS)
364#pragma GCC diagnostic push
365#if defined(__clang__)
366#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
369 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
371#pragma GCC diagnostic pop
400#if defined(MICRO_OS_PLUS_TRACE) \
401 && defined(MICRO_OS_PLUS_TRACE_MICRO_TEST_PLUS_CONSTRUCTORS)
403#pragma GCC diagnostic push
404#if defined(__clang__)
405#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
408 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name);
410#pragma GCC diagnostic pop
425#if defined(MICRO_OS_PLUS_TRACE) \
426 && defined(MICRO_OS_PLUS_TRACE_MICRO_TEST_PLUS_CONSTRUCTORS)
428#pragma GCC diagnostic push
429#if defined(__clang__)
430#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
433 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
435#pragma GCC diagnostic pop
450#if defined(MICRO_OS_PLUS_TRACE) \
451 && defined(MICRO_OS_PLUS_TRACE_MICRO_TEST_PLUS_CONSTRUCTORS)
453#pragma GCC diagnostic push
454#if defined(__clang__)
455#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
458 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
460#pragma GCC diagnostic pop
475#if defined(MICRO_OS_PLUS_TRACE) \
476 && defined(MICRO_OS_PLUS_TRACE_MICRO_TEST_PLUS)
478#pragma GCC diagnostic push
479#if defined(__clang__)
480#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
483 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
485#pragma GCC diagnostic pop
class runner & runner(void) const noexcept
Gets the test runner associated with this test runnable.
runnable_base(const char *name, runner &runner, size_t own_index)
Constructs a runnable_base with a name, runner, and index.
void after_subtest_create_(std::unique_ptr< subtest > child_test, suite &suite)
Registers a newly constructed child subtest and executes it immediately.
size_t own_index_
The test index, counting from 1.
size_t own_index() const noexcept
Returns the positional index of this object within its parent.
class reporter & reporter(void) const noexcept
Gets the test reporter associated with this test runnable.
class runner & runner_
Reference to the test runner that owns this object.
virtual ~runnable_base() override
Virtual destructor.
void abort(const reflection::source_location &sl=reflection::source_location::current())
Aborts test execution via the owning runner.
std::vector< std::unique_ptr< subtest > > children_subtests_
Owning collection of direct child subtests.
std::function< void(subtest &)> callable_
void increment_executed_subtests(size_t count=1) noexcept
Increments the executed-subtests counter.
const char * name(void) const noexcept
Gets the node name.
virtual ~test_node()
Virtual destructor for the test_node class.
runner_totals & totals() noexcept
Gets the totals for the test.
test_node(const char *name)
Constructs a test node.
const char * name_
The test node name.
void timestamp_begin(void) noexcept
Records the begin timestamp using the current system clock.
void timestamp_end(void) noexcept
Records the end timestamp using the current system clock.
Local implementation of source location information for diagnostics.
Reporter to display test results, including operand values and types for failures.
virtual void begin_subtest(subtest &subtest)=0
Mark the beginning of a subtest.
virtual void begin_suite(suite &suite)=0
Mark the beginning of a test suite.
virtual void end_suite(suite &suite)=0
Mark the end of a test suite.
The test runner for the µTest++ framework.
std::function< void(static_suite &)> static_callable_
Callable storing the static suite body and any bound arguments. Invoked with a reference to the concr...
virtual void run(void) override
Executes the static suite body using the stored static callable.
virtual ~static_suite() override
Virtual destructor.
A named, runnable test case that lives inside a suite.
virtual ~subtest() override
Virtual destructor.
virtual void run(void) override
Executes the subtest body by invoking the stored callable.
A named, runnable test suite registered with the test runner.
suite(const char *name, class runner &runner, Callable_T &&callable, Args_T &&... arguments)
Constructs a suite with a name, runner, and callable body.
virtual void run(void) override
Executes the suite body by invoking the stored callable.
detail::timestamps & timings() noexcept
Gets the timings for this suite.
virtual ~suite() override
Virtual destructor.
void name(const char *new_name) noexcept
Sets the name of the top-level suite.
top_suite(const char *name, class runner &runner)
Constructs the top-level suite with a name and runner reference.
virtual ~top_suite() override
Virtual destructor.
Internal implementation details for the µTest++ framework.
Primary namespace for the µTest++ testing framework.
C++ header file with declarations for the µTest++ test runner.
C++ header file with declarations for the µTest++ test suite.