46#if __has_include(<micro-os-plus/project-config.h>)
47#include <micro-os-plus/project-config.h>
48#elif __has_include(<micro-os-plus/config.h>)
50 "micro-os-plus/config.h is deprecated, rename to micro-os-plus/project-config.h and include it instead of micro-os-plus/config.h"
51#include <micro-os-plus/config.h>
54#if __has_include(<micro-os-plus/micro-test-plus-defines.h>)
55#include <micro-os-plus/micro-test-plus-defines.h>
58#if defined(MICRO_OS_PLUS_TRACE)
59#include <micro-os-plus/diag/trace.h>
69#pragma clang diagnostic ignored "-Wunknown-warning-option"
70#pragma clang diagnostic ignored "-Wc++98-compat"
71#pragma clang diagnostic ignored "-Wc++98-compat-pedantic"
73#pragma GCC diagnostic ignored "-Wredundant-tags"
74#pragma GCC diagnostic ignored "-Wsuggest-final-types"
75#pragma GCC diagnostic ignored "-Wsuggest-final-methods"
95#if defined(MICRO_OS_PLUS_TRACE) \
96 && defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
98#pragma GCC diagnostic push
100#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
103 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name);
105#pragma GCC diagnostic pop
118#if defined(MICRO_OS_PLUS_TRACE) \
119 && defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
121#pragma GCC diagnostic push
122#if defined(__clang__)
123#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
126 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
128#pragma GCC diagnostic pop
149#if defined(MICRO_OS_PLUS_TRACE) \
150 && defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
152#pragma GCC diagnostic push
153#if defined(__clang__)
154#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
157 trace::printf (
"%s '%s' %zu\n", __PRETTY_FUNCTION__,
name,
own_index_);
159#pragma GCC diagnostic pop
173#if defined(MICRO_OS_PLUS_TRACE) \
174 && defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
176#pragma GCC diagnostic push
177#if defined(__clang__)
178#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
181 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
183#pragma GCC diagnostic pop
225 std::unique_ptr<class subtest> child_test,
suite&
suite)
235#if defined(MICRO_OS_PLUS_TRACE) \
236 && defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
238#pragma GCC diagnostic push
239#if defined(__clang__)
240#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
243 trace::printf (
"%s subtest '%s' executed one more subtest\n",
244 __PRETTY_FUNCTION__,
name ());
246#pragma GCC diagnostic pop
253#if defined(MICRO_OS_PLUS_TRACE) \
254 && defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
256#pragma GCC diagnostic push
257#if defined(__clang__)
258#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
261 trace::printf (
"%s suite '%s' totals\n", __PRETTY_FUNCTION__,
264#pragma GCC diagnostic pop
286#if defined(MICRO_OS_PLUS_TRACE) \
287 && defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
289#pragma GCC diagnostic push
290#if defined(__clang__)
291#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
294 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
296#pragma GCC diagnostic pop
309#if defined(MICRO_OS_PLUS_TRACE) \
310 && defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_ENABLED)
312#pragma GCC diagnostic push
313#if defined(__clang__)
314#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
317 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
319#pragma GCC diagnostic pop
347#if defined(MICRO_OS_PLUS_TRACE) \
348 && defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
350#pragma GCC diagnostic push
351#if defined(__clang__)
352#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
355 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
357#pragma GCC diagnostic pop
370#if defined(MICRO_OS_PLUS_TRACE) \
371 && defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_ENABLED)
373#pragma GCC diagnostic push
374#if defined(__clang__)
375#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
378 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
380#pragma GCC diagnostic pop
409#if defined(MICRO_OS_PLUS_TRACE) \
410 && defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
412#pragma GCC diagnostic push
413#if defined(__clang__)
414#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
417 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name);
419#pragma GCC diagnostic pop
434#if defined(MICRO_OS_PLUS_TRACE) \
435 && defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
437#pragma GCC diagnostic push
438#if defined(__clang__)
439#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
442 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
444#pragma GCC diagnostic pop
459#if defined(MICRO_OS_PLUS_TRACE) \
460 && defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
462#pragma GCC diagnostic push
463#if defined(__clang__)
464#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
467 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
469#pragma GCC diagnostic pop
484#if defined(MICRO_OS_PLUS_TRACE) \
485 && defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_ENABLED)
487#pragma GCC diagnostic push
488#if defined(__clang__)
489#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
492 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
494#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.