runnable Class Template
CRTP base class factoring out callable storage, rule-of-five, and run() logic shared by subtest and suite. More...
Declaration
class micro_os_plus::micro_test_plus::detail::runnable<Self_T> { ... }
Included Headers
Base class
| class | runnable_base |
|
Non-template base for all runnable objects (suites and subtests). More... | |
Public Constructors Index
template <typename Callable_T, typename... Args_T> | |
| runnable (const char *name, class runner &runner, size_t own_index, Callable_T &&callable, Args_T &&... arguments) | |
|
Class template constructor. More... | |
template <typename Self_T> | |
| runnable (const runnable &)=delete | |
|
Deleted copy constructor to prevent copying. More... | |
template <typename Self_T> | |
| runnable (runnable &&)=delete | |
|
Deleted move constructor to prevent moving. More... | |
Public Destructor Index
template <typename Self_T> | |
| ~runnable () override | |
|
Virtual destructor. More... | |
Public Operators Index
template <typename Self_T> | |
| runnable & | operator= (const runnable &)=delete |
|
Deleted copy assignment operator to prevent copying. More... | |
template <typename Self_T> | |
| runnable & | operator= (runnable &&)=delete |
|
Deleted move assignment operator to prevent moving. More... | |
Public Member Functions Index
template <typename Self_T> | |
| void | abort (const reflection::source_location &sl=reflection::source_location::current()) |
|
Aborts test execution via the owning runner. More... | |
template <typename Self_T> | |
| size_t | children_subtests_count (void) const noexcept |
|
Returns the number of direct child subtests owned by this node. More... | |
template <typename Self_T> | |
| size_t | current_subtest_index () const noexcept |
|
Returns the index of the most recently created child subtest. More... | |
template <typename Self_T> | |
| size_t | increment_subtest_index () noexcept |
|
Increments and returns the child subtest sequential index. More... | |
template <typename Self_T> | |
| const char * | name (void) const noexcept |
|
Gets the node name. More... | |
template <typename Self_T> | |
| size_t | own_index () const noexcept |
|
Returns the positional index of this object within its parent. More... | |
template <typename Self_T> | |
| void | own_index (size_t index) noexcept |
|
Sets the positional index of this object within its parent. More... | |
template <typename Self_T> | |
| class reporter & | reporter (void) const noexcept |
|
Gets the test reporter associated with this test runnable. More... | |
template <typename Self_T> | |
| void | run (void)=0 |
|
Runs the test function by invoking the stored callable with the derived self instance. More... | |
template <typename Self_T> | |
| class runner & | runner (void) const noexcept |
|
Gets the test runner associated with this test runnable. More... | |
template <typename Self_T> | |
| const runner_totals & | totals () const noexcept |
|
Gets the totals for the test (const overload). More... | |
template <typename Self_T> | |
| runner_totals & | totals () noexcept |
|
Gets the totals for the test. More... | |
Protected Member Functions Index
template <typename Self_T> | |
| void | after_subtest_create_ (std::unique_ptr< subtest > child_test, suite &suite) |
|
Registers a newly constructed child subtest and executes it immediately. More... | |
Protected Member Attributes Index
template <typename Self_T> | |
| std::function< void(Self_T &)> | callable_ |
|
Callable storing the test body and any bound arguments. Invoked with a reference to the derived Self_T instance. More... | |
template <typename Self_T> | |
| std::vector< std::unique_ptr< subtest > > | children_subtests_ |
|
Owning collection of direct child subtests. More... | |
template <typename Self_T> | |
| size_t | current_subtest_index_ = 0 |
|
The subtest index, counting from 1. More... | |
template <typename Self_T> | |
| const char * | name_ |
|
The test node name. More... | |
template <typename Self_T> | |
| size_t | own_index_ |
|
The test index, counting from 1. More... | |
template <typename Self_T> | |
| class { ... } | runner_ |
|
Reference to the test runner that owns this object. More... | |
template <typename Self_T> | |
| runner_totals | totals_ |
|
Totals for the test node, including nested cases. More... | |
Description
CRTP base class factoring out callable storage, rule-of-five, and run() logic shared by subtest and suite.
- Template Parameters
-
Self_T The concrete derived class type (CRTP pattern). The stored callable receives a Self_T& reference when the test is executed.
Definition at line 443 of file test.h.
Public Constructors
runnable()
|
Class template constructor.
- Template Parameters
-
Callable_T The callable type.
Args_T The additional argument types.
- Parameters
-
[in] name The test name, used in reports.
[in] runner The test runner managing this test.
[in] own_index The test index within the runner.
[in] callable The callable invoked when the test runs.
[in] arguments Additional arguments forwarded to the callable after the leading Self_T& reference.
Binds the callable and its arguments into the stored callable_ function object. When run() is called, the stored function is invoked with a reference to the derived Self_T instance as its first argument, followed by the bound arguments.
Declaration at line 460 of file test.h, definition at line 191 of file test-inlines.h.
References micro_os_plus::micro_test_plus::detail::test_node::name, micro_os_plus::micro_test_plus::detail::runnable_base::own_index and micro_os_plus::micro_test_plus::detail::runnable_base::runner.
Referenced by micro_os_plus::micro_test_plus::detail::runnable< Self_T >::runnable, micro_os_plus::micro_test_plus::detail::runnable< Self_T >::runnable, micro_os_plus::micro_test_plus::detail::runnable< Self_T >::operator= and micro_os_plus::micro_test_plus::detail::runnable< Self_T >::operator=.
runnable()
| delete |
Deleted copy constructor to prevent copying.
Definition at line 466 of file test.h.
Reference micro_os_plus::micro_test_plus::detail::runnable< Self_T >::runnable.
runnable()
| delete |
Deleted move constructor to prevent moving.
Definition at line 471 of file test.h.
Reference micro_os_plus::micro_test_plus::detail::runnable< Self_T >::runnable.
Public Destructor
~runnable()
| virtual |
Virtual destructor.
No-op in production builds. When tracing is enabled via MICRO_OS_PLUS_TRACE_MICRO_TEST_PLUS_CONSTRUCTORS, emits a trace message identifying the instance being destroyed.
Declaration at line 490 of file test.h, definition at line 234 of file test-inlines.h.
Reference micro_os_plus::micro_test_plus::detail::test_node::name_.
Public Operators
operator=()
| delete |
Deleted copy assignment operator to prevent copying.
Definition at line 477 of file test.h.
Reference micro_os_plus::micro_test_plus::detail::runnable< Self_T >::runnable.
operator=()
| delete |
Deleted move assignment operator to prevent moving.
Definition at line 484 of file test.h.
Reference micro_os_plus::micro_test_plus::detail::runnable< Self_T >::runnable.
Public Member Functions
abort()
|
Aborts test execution via the owning runner.
- Parameters
-
sl The source location from which the abort is triggered.
- Returns
Does not return.
Delegates immediately to runner_.abort(), passing the supplied source location so that the error message identifies the call site before the process is terminated via ::abort().
Declaration at line 369 of file test.h, definition at line 199 of file test.cpp.
Reference micro_os_plus::micro_test_plus::detail::runnable_base::runner_.
Referenced by micro_os_plus::micro_test_plus::detail::runnable_base::operator=.
children_subtests_count()
| inline nodiscard noexcept |
Returns the number of direct child subtests owned by this node.
- Parameters
None.
- Returns
The number of child subtests.
Returns the number of child subtests owned by this node.
Declaration at line 349 of file test.h, definition at line 165 of file test-inlines.h.
Reference micro_os_plus::micro_test_plus::detail::runnable_base::children_subtests_.
Referenced by micro_os_plus::micro_test_plus::reporter_tap::end_subtest, micro_os_plus::micro_test_plus::reporter_tap::end_suite and micro_os_plus::micro_test_plus::detail::runnable_base::operator=.
current_subtest_index()
| inline nodiscard noexcept |
Returns the index of the most recently created child subtest.
- Parameters
None.
- Returns
The current child subtest sequential index.
Returns the sequential index of the most recently created child subtest.
Declaration at line 329 of file test.h, definition at line 143 of file test-inlines.h.
Reference micro_os_plus::micro_test_plus::detail::runnable_base::current_subtest_index_.
Referenced by micro_os_plus::micro_test_plus::detail::runnable_base::operator=, micro_os_plus::micro_test_plus::reporter_tap::output_fail_prefix_ and micro_os_plus::micro_test_plus::reporter_tap::output_pass_prefix_.
increment_subtest_index()
| inline noexcept |
Increments and returns the child subtest sequential index.
- Parameters
None.
- Returns
The new index value after incrementing.
Each call to test() invokes this method before constructing the new subtest, so the index values form a strictly increasing, one-based sequence.
Declaration at line 339 of file test.h, definition at line 155 of file test-inlines.h.
Reference micro_os_plus::micro_test_plus::detail::runnable_base::current_subtest_index_.
Referenced by micro_os_plus::micro_test_plus::detail::runnable_base::operator=.
name()
| inline nodiscard noexcept |
Gets the node name.
- Parameters
None.
- Returns
A pointer to the null-terminated test node name.
Returns a pointer to the null-terminated name stored in name_.
Declaration at line 194 of file test.h, definition at line 91 of file test-inlines.h.
Reference micro_os_plus::micro_test_plus::detail::test_node::name_.
Referenced by micro_os_plus::micro_test_plus::detail::runnable< Self_T >::runnable, micro_os_plus::micro_test_plus::detail::runnable_base::runnable_base, micro_os_plus::micro_test_plus::runner::runner, micro_os_plus::micro_test_plus::runner::runner, micro_os_plus::micro_test_plus::static_runner::static_runner, micro_os_plus::micro_test_plus::static_runner::static_runner, micro_os_plus::micro_test_plus::detail::test_node::test_node, micro_os_plus::micro_test_plus::detail::runnable_base::after_subtest_create_, micro_os_plus::micro_test_plus::reporter_human::begin_subtest, micro_os_plus::micro_test_plus::reporter_tap::begin_subtest, micro_os_plus::micro_test_plus::reporter_human::begin_suite, micro_os_plus::micro_test_plus::reporter_tap::begin_suite, micro_os_plus::micro_test_plus::reporter_human::end_subtest, micro_os_plus::micro_test_plus::reporter_tap::end_subtest, micro_os_plus::micro_test_plus::reporter_human::end_suite, micro_os_plus::micro_test_plus::reporter_tap::end_suite, micro_os_plus::micro_test_plus::runner::operator= and micro_os_plus::micro_test_plus::runner::suite.
own_index()
| inline nodiscard noexcept |
Returns the positional index of this object within its parent.
- Parameters
None.
- Returns
The one-based own index.
Returns the one-based positional index of this object within its parent.
Declaration at line 305 of file test.h, definition at line 123 of file test-inlines.h.
Reference micro_os_plus::micro_test_plus::detail::runnable_base::own_index_.
Referenced by micro_os_plus::micro_test_plus::detail::runnable< Self_T >::runnable, micro_os_plus::micro_test_plus::detail::runnable_base::runnable_base, micro_os_plus::micro_test_plus::reporter_tap::end_subtest, micro_os_plus::micro_test_plus::reporter_tap::end_suite and micro_os_plus::micro_test_plus::detail::runnable_base::operator=.
own_index()
| inline noexcept |
Sets the positional index of this object within its parent.
This overload follows the same-name getter/setter pattern used throughout the framework: the getter is the const overload and the setter is the non-const single-argument overload.
- Parameters
-
index The new index value.
- Returns
Nothing.
Sets the positional index of this object within its parent.
Declaration at line 319 of file test.h, definition at line 133 of file test-inlines.h.
Reference micro_os_plus::micro_test_plus::detail::runnable_base::own_index_.
reporter()
| nodiscard noexcept |
Gets the test reporter associated with this test runnable.
- Parameters
None.
- Returns
A reference to the test reporter.
Delegates immediately to runner_.reporter(), returning the reporter associated with the owning runner instance.
Declaration at line 359 of file test.h, definition at line 187 of file test.cpp.
Reference micro_os_plus::micro_test_plus::detail::runnable_base::runner_.
Referenced by micro_os_plus::micro_test_plus::detail::runnable_base::operator=.
run()
|
runner()
| inline nodiscard noexcept |
Gets the test runner associated with this test runnable.
- Parameters
None.
- Returns
A reference to the test runner.
Returns a reference to the owning test runner.
Declaration at line 380 of file test.h, definition at line 175 of file test-inlines.h.
Reference micro_os_plus::micro_test_plus::detail::runnable_base::runner_.
Referenced by micro_os_plus::micro_test_plus::detail::runnable< Self_T >::runnable, micro_os_plus::micro_test_plus::detail::runnable_base::runnable_base and micro_os_plus::micro_test_plus::detail::runnable_base::operator=.
totals()
| inline nodiscard noexcept |
Gets the totals for the test (const overload).
- Parameters
None.
- Returns
A const reference to the runner_totals instance.
Returns a const reference to the runner_totals member.
Declaration at line 215 of file test.h, definition at line 111 of file test-inlines.h.
Reference micro_os_plus::micro_test_plus::detail::test_node::totals_.
totals()
| inline nodiscard noexcept |
Gets the totals for the test.
- Parameters
None.
- Returns
A reference to the runner_totals instance.
Returns a reference to the runner_totals member.
Declaration at line 205 of file test.h, definition at line 101 of file test-inlines.h.
Reference micro_os_plus::micro_test_plus::detail::test_node::totals_.
Referenced by micro_os_plus::micro_test_plus::detail::runnable_base::after_subtest_create_, micro_os_plus::micro_test_plus::reporter_human::end_session, micro_os_plus::micro_test_plus::reporter_tap::end_session, micro_os_plus::micro_test_plus::reporter_human::end_subtest, micro_os_plus::micro_test_plus::reporter_tap::end_subtest, micro_os_plus::micro_test_plus::reporter_human::end_suite, micro_os_plus::micro_test_plus::reporter_tap::end_suite and micro_os_plus::micro_test_plus::detail::test_node::operator=.
Protected Member Functions
after_subtest_create_()
| protected |
Registers a newly constructed child subtest and executes it immediately.
- Parameters
-
child_test Owning pointer to the newly created subtest.
suite The parent suite to which execution results are reported.
- Returns
Nothing.
Transfers ownership of child_test into children_subtests_ and immediately invokes subtest::run() on the newly stored subtest. The parent's executed-subtest counter is then incremented. The child's check counters are intentionally not merged into the parent totals; each subtest reports only its own counters. The child's totals are, however, accumulated into suite so that the suite summary reflects all checks performed by its subtests.
Declaration at line 394 of file test.h, definition at line 215 of file test.cpp.
References micro_os_plus::micro_test_plus::detail::runnable_base::children_subtests_, micro_os_plus::micro_test_plus::detail::runner_totals::increment_executed_subtests, micro_os_plus::micro_test_plus::detail::test_node::name, micro_os_plus::micro_test_plus::subtest::run and micro_os_plus::micro_test_plus::detail::test_node::totals.
Referenced by micro_os_plus::micro_test_plus::detail::runnable_base::operator=.
Protected Member Attributes
callable_
| protected |
children_subtests_
| protected |
Owning collection of direct child subtests.
Each call to test() appends a new subtest to this vector and runs it immediately. The vector retains ownership for the lifetime of the parent runnable.
Definition at line 427 of file test.h.
Referenced by micro_os_plus::micro_test_plus::detail::runnable_base::after_subtest_create_ and micro_os_plus::micro_test_plus::detail::runnable_base::children_subtests_count.
current_subtest_index_
| protected |
The subtest index, counting from 1.
This index is used for reporting and tracking the execution order of subtests within a suite, especially when nested subtests are involved. It is incremented for each subtest created, allowing for clear identification of subtests in reports and diagnostics.
Definition at line 417 of file test.h.
Referenced by micro_os_plus::micro_test_plus::detail::runnable_base::current_subtest_index and micro_os_plus::micro_test_plus::detail::runnable_base::increment_subtest_index.
name_
| protected |
The test node name.
Derived classes may access this member directly in addition to the public name() getter.
Definition at line 224 of file test.h.
Referenced by micro_os_plus::micro_test_plus::detail::test_node::test_node, micro_os_plus::micro_test_plus::detail::runnable< Self_T >::~runnable, micro_os_plus::micro_test_plus::detail::runnable_base::~runnable_base, micro_os_plus::micro_test_plus::detail::test_node::~test_node and micro_os_plus::micro_test_plus::detail::test_node::name.
own_index_
| protected |
The test index, counting from 1.
Definition at line 406 of file test.h.
Referenced by micro_os_plus::micro_test_plus::detail::runnable_base::runnable_base, micro_os_plus::micro_test_plus::detail::runnable_base::own_index and micro_os_plus::micro_test_plus::detail::runnable_base::own_index.
runner_
| protected |
Reference to the test runner that owns this object.
Definition at line 401 of file test.h.
Referenced by micro_os_plus::micro_test_plus::detail::runnable_base::runnable_base, micro_os_plus::micro_test_plus::detail::runnable_base::abort, micro_os_plus::micro_test_plus::detail::runnable_base::reporter and micro_os_plus::micro_test_plus::detail::runnable_base::runner.
totals_
| protected |
Totals for the test node, including nested cases.
Definition at line 229 of file test.h.
Referenced by micro_os_plus::micro_test_plus::runner::exit_code, micro_os_plus::micro_test_plus::runner::run_suites_, micro_os_plus::micro_test_plus::static_runner::run_suites_, micro_os_plus::micro_test_plus::detail::test_node::totals and micro_os_plus::micro_test_plus::detail::test_node::totals.
The documentation for this class was generated from the following files:
Generated via doxygen2docusaurus 2.2.0 by Doxygen 1.17.0.