subtest Class
A named, runnable test case that lives inside a suite. More...
Declaration
Included Headers
Base class
| class | runnable<Self_T> |
|
CRTP base class factoring out callable storage, rule-of-five, and run() logic shared by subtest and suite. More... | |
Public Constructors Index
template <typename Callable_T, typename... Args_T> | |
| subtest (const char *name, class runner &runner, suite &parent_suite, size_t own_index, size_t nesting_depth, Callable_T &&callable, Args_T &&... arguments) | |
|
Constructs a subtest with a name, runner, parent suite, index, nesting depth, and callable. More... | |
| subtest (const subtest &)=delete | |
|
Deleted copy constructor to prevent copying. More... | |
| subtest (subtest &&)=delete | |
|
Deleted move constructor to prevent moving. More... | |
Public Destructor Index
| ~subtest () override | |
|
Virtual destructor. More... | |
Public Operators Index
| subtest & | operator= (const subtest &)=delete |
|
Deleted copy assignment operator to prevent copying. More... | |
| subtest & | operator= (subtest &&)=delete |
|
Deleted move assignment operator to prevent moving. More... | |
Public Member Functions Index
| void | abort (const reflection::source_location &sl=reflection::source_location::current()) |
|
Aborts test execution via the owning runner. More... | |
| size_t | children_subtests_count (void) const noexcept |
|
Returns the number of direct child subtests owned by this node. More... | |
| size_t | current_subtest_index () const noexcept |
|
Returns the index of the most recently created child subtest. More... | |
| size_t | increment_subtest_index () noexcept |
|
Increments and returns the child subtest sequential index. More... | |
| const char * | name (void) const noexcept |
|
Gets the node name. More... | |
| size_t | nesting_depth () const noexcept |
|
Returns the nesting depth of this subtest. More... | |
| size_t | own_index () const noexcept |
|
Returns the positional index of this object within its parent. More... | |
| void | own_index (size_t index) noexcept |
|
Sets the positional index of this object within its parent. More... | |
| class reporter & | reporter (void) const noexcept |
|
Gets the test reporter associated with this test runnable. More... | |
| void | run (void) override |
|
Executes the subtest body by invoking the stored callable. More... | |
| class runner & | runner (void) const noexcept |
|
Gets the test runner associated with this test runnable. More... | |
template <typename Callable_T, typename... Args_T> | |
| void | test (const char *name, Callable_T &&callable, Args_T &&... arguments) |
|
Adds a test case to the suite. More... | |
| const runner_totals & | totals () const noexcept |
|
Gets the totals for the test (const overload). More... | |
| runner_totals & | totals () noexcept |
|
Gets the totals for the test. More... | |
template <class Expr_T> | |
| auto | assume (const Expr_T &expr, const reflection::source_location &sl=reflection::source_location::current()) |
|
Check a condition and, if false, abort test execution. More... | |
template <class Expr_T> | |
| auto | expect (const Expr_T &expr, const reflection::source_location &sl=reflection::source_location::current()) |
|
Evaluate a generic condition and report the results. More... | |
Protected Member Functions Index
| 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
| std::function< void(subtest &)> | callable_ |
|
Callable storing the test body and any bound arguments. Invoked with a reference to the derived Self_T instance. More... | |
| std::vector< std::unique_ptr< subtest > > | children_subtests_ |
|
Owning collection of direct child subtests. More... | |
| size_t | current_subtest_index_ |
|
The subtest index, counting from 1. More... | |
| const char * | name_ |
|
The test node name. More... | |
| size_t | nesting_depth_ |
|
The nesting depth of this subtest within the suite. More... | |
| size_t | own_index_ |
|
The test index, counting from 1. More... | |
| suite & | parent_suite_ |
|
Reference to the parent suite that owns this subtest. More... | |
| class { ... } | runner_ |
|
Reference to the test runner that owns this object. More... | |
| runner_totals | totals_ |
|
Totals for the test node, including nested cases. More... | |
Description
A named, runnable test case that lives inside a suite.
subtest represents a single, named test case or a nested group of checks within a parent suite or subtest. It is constructed by calling suite::test() or subtest::test(), both of which create the object, immediately execute its callable body via run(), and register the result with the parent node.
The body of the subtest is supplied as a callable (typically a lambda) that receives a subtest& reference as its first argument. Inside the body, expect() and assume() are used to evaluate conditions and record the results. Subtests may be nested to an arbitrary depth.
The class is non-copyable and non-movable to preserve unique ownership and consistent state throughout the test session.
Definition at line 550 of file test.h.
Public Constructors
subtest()
|
Constructs a subtest with a name, runner, parent suite, index, nesting depth, and callable.
- Template Parameters
-
Callable_T The type of a callable object.
Args_T The types of the callable arguments.
- Parameters
-
name The subtest name or description, used in reports.
runner The test runner managing this subtest.
parent_suite The suite that owns this subtest.
own_index The one-based positional index within the parent.
nesting_depth The depth of nesting; 1 for top-level subtests.
callable A generic callable object, usually a lambda, invoked when the subtest executes.
arguments A possibly empty list of arguments forwarded to the callable after the leading subtest& reference.
Delegates to runnable, which binds the callable with its arguments.
Declaration at line 572 of file test.h, definition at line 245 of file test-inlines.h.
References micro_os_plus::micro_test_plus::detail::runnable< subtest >::runnable, subtest, micro_os_plus::micro_test_plus::detail::runnable< subtest >::name, nesting_depth, micro_os_plus::micro_test_plus::detail::runnable< subtest >::own_index and micro_os_plus::micro_test_plus::detail::runnable< subtest >::runner.
Referenced by subtest, subtest, subtest, operator= and operator=.
subtest()
| delete |
subtest()
Public Destructor
~subtest()
| virtual |
Virtual destructor.
The destructor releases any resources associated with the subtest instance. If tracing is enabled, it outputs the function signature for diagnostic purposes. This ensures that the test suite is properly cleaned up after execution, supporting robust and reliable test management across all files and folders within the µTest++ framework.
Declaration at line 603 of file test.h, definition at line 217 of file test.cpp.
Reference micro_os_plus::micro_test_plus::detail::runnable< subtest >::name_.
Public Operators
operator=()
| delete |
operator=()
| delete |
Deleted move assignment operator to prevent moving.
Definition at line 597 of file test.h.
References subtest, assume, micro_os_plus::micro_test_plus::reflection::source_location::current, expect, micro_os_plus::micro_test_plus::detail::runnable< subtest >::name, nesting_depth, run and test.
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 378 of file test.h, definition at line 161 of file test.cpp.
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 358 of file test.h, definition at line 168 of file test-inlines.h.
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 338 of file test.h, definition at line 146 of file test-inlines.h.
References micro_os_plus::micro_test_plus::detail::runnable< subtest >::name and micro_os_plus::micro_test_plus::detail::runnable< subtest >::own_index_.
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 348 of file test.h, definition at line 158 of file test-inlines.h.
Referenced by test.
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 203 of file test.h, definition at line 94 of file test-inlines.h.
Referenced by subtest, micro_os_plus::micro_test_plus::detail::runnable< subtest >::current_subtest_index, operator=, test and micro_os_plus::micro_test_plus::detail::runnable< subtest >::totals.
nesting_depth()
| inline nodiscard noexcept |
Returns the nesting depth of this subtest.
- Parameters
None.
- Returns
The nesting depth (1 = top-level).
Top-level subtests (direct children of a suite) have depth 1. Each additional level of nesting increments the depth by 1.
Declaration at line 686 of file test.h, definition at line 320 of file test-inlines.h.
Reference nesting_depth_.
Referenced by subtest, 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::end_subtest, micro_os_plus::micro_test_plus::reporter_tap::end_subtest, operator=, micro_os_plus::micro_test_plus::reporter_human::output_fail_prefix_, micro_os_plus::micro_test_plus::reporter_tap::output_fail_prefix_, micro_os_plus::micro_test_plus::reporter_tap::output_fail_suffix_, micro_os_plus::micro_test_plus::reporter_human::output_pass_prefix_ and micro_os_plus::micro_test_plus::reporter_tap::output_pass_prefix_.
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 314 of file test.h, definition at line 126 of file test-inlines.h.
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 328 of file test.h, definition at line 136 of file test-inlines.h.
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 368 of file test.h, definition at line 149 of file test.cpp.
run()
| virtual |
Executes the subtest body by invoking the stored callable.
- Parameters
None.
- Returns
Nothing.
Invokes the stored callable with the Self_T instance, surrounded by reporter calls to begin and end the subtest.
Declaration at line 676 of file test.h, definition at line 230 of file test.cpp.
References micro_os_plus::micro_test_plus::reporter::begin_subtest, micro_os_plus::micro_test_plus::detail::runnable< subtest >::callable_, micro_os_plus::micro_test_plus::detail::runnable< subtest >::name_ and micro_os_plus::micro_test_plus::detail::runnable< subtest >::reporter.
Referenced by micro_os_plus::micro_test_plus::detail::runnable_base::after_subtest_create_ and operator=.
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 389 of file test.h, definition at line 178 of file test-inlines.h.
Referenced by micro_os_plus::micro_test_plus::detail::runnable< subtest >::runnable, subtest and test.
test()
|
Adds a test case to the suite.
- Template Parameters
-
Callable_T The type of a callable object.
Args_T The types of the callable arguments.
- Parameters
-
name The test case name or description, used in reports.
callable A generic callable object, usually a lambda, invoked to perform the test.
arguments A possibly empty list of arguments to be passed to the callable.
Allocates a child subtest on the heap, incrementing the subtest index and deepening the nesting level by one relative to this subtest's depth, then transfers ownership to the framework via after_subtest_create_().
Declaration at line 621 of file test.h, definition at line 268 of file test-inlines.h.
References micro_os_plus::micro_test_plus::detail::runnable< subtest >::after_subtest_create_, micro_os_plus::micro_test_plus::detail::runnable< subtest >::increment_subtest_index, micro_os_plus::micro_test_plus::detail::runnable< subtest >::name, nesting_depth_, micro_os_plus::micro_test_plus::detail::runnable< subtest >::own_index, parent_suite_ and micro_os_plus::micro_test_plus::detail::runnable< subtest >::runner.
Referenced by 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 224 of file test.h, definition at line 114 of file test-inlines.h.
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 214 of file test.h, definition at line 104 of file test-inlines.h.
References micro_os_plus::micro_test_plus::detail::runnable< subtest >::name and micro_os_plus::micro_test_plus::detail::runnable< subtest >::own_index_.
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 403 of file test.h, definition at line 177 of file test.cpp.
Referenced by test.
Protected Member Attributes
callable_
| protected |
children_subtests_
| protected |
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 426 of file test.h.
name_
| protected |
nesting_depth_
| protected |
The nesting depth of this subtest within the suite.
Definition at line 697 of file test.h.
Referenced by nesting_depth and test.
own_index_
| protected |
The test index, counting from 1.
Definition at line 415 of file test.h.
Referenced by micro_os_plus::micro_test_plus::detail::runnable< subtest >::current_subtest_index and micro_os_plus::micro_test_plus::detail::runnable< subtest >::totals.
parent_suite_
| protected |
runner_
| protected |
totals_
| protected |
Totals for the test node, including nested cases.
The documentation for this class was generated from the following files:
Generated via doxygen2docusaurus 2.2.2 by Doxygen 1.17.0.