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#include <micro-os-plus/diag/trace.h>
67#pragma clang diagnostic ignored "-Wunknown-warning-option"
68#pragma clang diagnostic ignored "-Wc++98-compat"
69#pragma clang diagnostic ignored "-Wc++98-compat-pedantic"
71#pragma GCC diagnostic ignored "-Wredundant-tags"
72#pragma GCC diagnostic ignored "-Wsuggest-final-types"
73#pragma GCC diagnostic ignored "-Wsuggest-final-methods"
93#if defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
95#pragma GCC diagnostic push
97#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
100 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name);
102#pragma GCC diagnostic pop
115#if defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
117#pragma GCC diagnostic push
118#if defined(__clang__)
119#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
122 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
124#pragma GCC diagnostic pop
145#if defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
147#pragma GCC diagnostic push
148#if defined(__clang__)
149#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
152 trace::printf (
"%s '%s' %zu\n", __PRETTY_FUNCTION__,
name,
own_index_);
154#pragma GCC diagnostic pop
168#if defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
170#pragma GCC diagnostic push
171#if defined(__clang__)
172#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
175 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
177#pragma GCC diagnostic pop
219 std::unique_ptr<class subtest> child_test,
suite&
suite)
229#if defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
231#pragma GCC diagnostic push
232#if defined(__clang__)
233#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
236 trace::printf (
"%s subtest '%s' executed one more subtest\n",
237 __PRETTY_FUNCTION__,
name ());
239#pragma GCC diagnostic pop
246#if defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
248#pragma GCC diagnostic push
249#if defined(__clang__)
250#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
253 trace::printf (
"%s suite '%s' totals\n", __PRETTY_FUNCTION__,
256#pragma GCC diagnostic pop
278#if defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
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_MICRO_TEST_PLUS_TRACE_ENABLED)
302#pragma GCC diagnostic push
303#if defined(__clang__)
304#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
307 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
309#pragma GCC diagnostic pop
337#if defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
339#pragma GCC diagnostic push
340#if defined(__clang__)
341#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
344 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
346#pragma GCC diagnostic pop
359#if defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_ENABLED)
361#pragma GCC diagnostic push
362#if defined(__clang__)
363#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
366 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
368#pragma GCC diagnostic pop
397#if defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
399#pragma GCC diagnostic push
400#if defined(__clang__)
401#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
404 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name);
406#pragma GCC diagnostic pop
421#if defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
423#pragma GCC diagnostic push
424#if defined(__clang__)
425#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
428 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
430#pragma GCC diagnostic pop
445#if defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_CONSTRUCTORS_ENABLED)
447#pragma GCC diagnostic push
448#if defined(__clang__)
449#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
452 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
454#pragma GCC diagnostic pop
469#if defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_ENABLED)
471#pragma GCC diagnostic push
472#if defined(__clang__)
473#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
476 trace::printf (
"%s '%s'\n", __PRETTY_FUNCTION__,
name_);
478#pragma GCC diagnostic pop
484 this->
timings ().timestamp_begin ();
489 this->
timings ().timestamp_end ();
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.
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.
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.
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.