@micro-os-plus/micro-test-plus 3.2.2 → 3.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/.cmake-format.yaml +11 -0
  2. package/CHANGELOG.md +352 -2
  3. package/CMakeLists.txt +32 -30
  4. package/LICENSE +1 -1
  5. package/README.md +1 -1
  6. package/{xcdl.json → config/xcdl-build.json} +6 -6
  7. package/include/micro-os-plus/micro-test-plus/detail.h +1885 -0
  8. package/include/micro-os-plus/micro-test-plus/function-comparators.h +333 -0
  9. package/include/micro-os-plus/micro-test-plus/inlines/details-inlines.h +172 -0
  10. package/include/micro-os-plus/micro-test-plus/inlines/function-comparators-inlines.h +341 -0
  11. package/include/micro-os-plus/micro-test-plus/inlines/literals-inlines.h +604 -0
  12. package/include/micro-os-plus/micro-test-plus/inlines/math-inlines.h +315 -0
  13. package/include/micro-os-plus/micro-test-plus/inlines/micro-test-plus-inlines.h +313 -0
  14. package/include/micro-os-plus/micro-test-plus/inlines/reflection-inlines.h +170 -0
  15. package/include/micro-os-plus/micro-test-plus/inlines/test-reporter-inlines.h +471 -0
  16. package/include/micro-os-plus/micro-test-plus/inlines/test-suite-inlines.h +115 -0
  17. package/include/micro-os-plus/micro-test-plus/literals.h +912 -0
  18. package/include/micro-os-plus/micro-test-plus/math.h +217 -0
  19. package/include/micro-os-plus/micro-test-plus/operators.h +514 -0
  20. package/include/micro-os-plus/micro-test-plus/reflection.h +233 -0
  21. package/include/micro-os-plus/micro-test-plus/test-reporter.h +801 -0
  22. package/include/micro-os-plus/micro-test-plus/test-runner.h +241 -0
  23. package/include/micro-os-plus/micro-test-plus/test-suite.h +456 -0
  24. package/include/micro-os-plus/micro-test-plus/type-traits.h +1148 -0
  25. package/include/micro-os-plus/micro-test-plus.h +169 -551
  26. package/meson.build +5 -5
  27. package/package.json +29 -34
  28. package/src/micro-test-plus.cpp +131 -35
  29. package/src/test-reporter.cpp +348 -6
  30. package/src/test-runner.cpp +69 -5
  31. package/src/test-suite.cpp +124 -5
  32. package/include/micro-os-plus/detail.h +0 -765
  33. package/include/micro-os-plus/inlines.h +0 -209
  34. package/include/micro-os-plus/literals.h +0 -512
  35. package/include/micro-os-plus/math.h +0 -204
  36. package/include/micro-os-plus/reflection.h +0 -139
  37. package/include/micro-os-plus/test-reporter-inlines.h +0 -230
  38. package/include/micro-os-plus/test-reporter.h +0 -356
  39. package/include/micro-os-plus/test-runner.h +0 -132
  40. package/include/micro-os-plus/test-suite.h +0 -306
  41. package/include/micro-os-plus/type-traits.h +0 -389
@@ -0,0 +1,241 @@
1
+ /*
2
+ * This file is part of the µOS++ project (https://micro-os-plus.github.io/).
3
+ * Copyright (c) 2021-2026 Liviu Ionescu. All rights reserved.
4
+ *
5
+ * Permission to use, copy, modify, and/or distribute this software for any
6
+ * purpose is hereby granted, under the terms of the MIT license.
7
+ *
8
+ * If a copy of the license was not distributed with this file, it can be
9
+ * obtained from https://opensource.org/licenses/mit.
10
+ *
11
+ * Major parts of the code are inspired from v1.1.8 of the Boost UT project,
12
+ * released under the terms of the Boost Version 1.0 Software License,
13
+ * which can be obtained from https://www.boost.org/LICENSE_1_0.txt.
14
+ */
15
+
16
+ // ----------------------------------------------------------------------------
17
+
18
+ /**
19
+ * @file
20
+ * @brief C++ header file with declarations for the µTest++ test runner.
21
+ *
22
+ * @details
23
+ * This header provides the declarations for the test runner facilities used
24
+ * within the µTest++ framework. It defines the interface for managing the
25
+ * registration and execution of test suites, supporting automated discovery
26
+ * and orchestration of tests across a project.
27
+ *
28
+ * The test runner is responsible for initialising the test environment,
29
+ * registering test suites, managing command-line arguments, and determining
30
+ * the overall test result via an exit code. It also provides mechanisms for
31
+ * aborting test execution and retrieving the default suite name.
32
+ *
33
+ * All definitions reside within the
34
+ * `micro_os_plus::micro_test_plus` namespace, ensuring clear
35
+ * separation from user code and minimising the risk of naming conflicts.
36
+ *
37
+ * The header files are organised within the
38
+ * `include/micro-os-plus/micro-test-plus` folder to maintain a structured and
39
+ * modular codebase.
40
+ *
41
+ * This file is intended solely for internal use within the framework and
42
+ * should not be included directly by user code.
43
+ */
44
+
45
+ #ifndef MICRO_TEST_PLUS_TEST_RUNNER_H_
46
+ #define MICRO_TEST_PLUS_TEST_RUNNER_H_
47
+
48
+ // ----------------------------------------------------------------------------
49
+
50
+ #ifdef __cplusplus
51
+
52
+ // ----------------------------------------------------------------------------
53
+
54
+ #include <functional>
55
+
56
+ // ----------------------------------------------------------------------------
57
+
58
+ #if defined(__GNUC__)
59
+ #pragma GCC diagnostic push
60
+ #pragma GCC diagnostic ignored "-Wpadded"
61
+ #if defined(__clang__)
62
+ #pragma clang diagnostic ignored "-Wc++98-compat"
63
+ #endif
64
+ #endif
65
+
66
+ namespace micro_os_plus::micro_test_plus
67
+ {
68
+ // --------------------------------------------------------------------------
69
+
70
+ // Forward definition.
71
+ class test_suite_base;
72
+
73
+ // --------------------------------------------------------------------------
74
+
75
+ /**
76
+ * @brief The test runner for the µTest++ framework.
77
+ *
78
+ * @details
79
+ * The `test_runner` class is responsible for managing the registration and
80
+ * execution of test suites within the µTest++ framework. It maintains a
81
+ * collection of test suites, each of which registers itself automatically
82
+ * upon construction, enabling seamless integration and execution of tests
83
+ * across different components and folders of a project.
84
+ *
85
+ * The test runner provides methods for initialising the test environment,
86
+ * registering test suites, retrieving the runner's name, and determining the
87
+ * overall test result via an exit code. It also offers an abort mechanism
88
+ * for terminating test execution in exceptional circumstances.
89
+ *
90
+ * All members and methods are defined within the
91
+ * `micro_os_plus::micro_test_plus` namespace, ensuring clear separation from
92
+ * user code and minimising the risk of naming conflicts.
93
+ *
94
+ * @headerfile micro-test-plus.h <micro-os-plus/micro-test-plus.h>
95
+ */
96
+ class test_runner
97
+ {
98
+ public:
99
+ /**
100
+ * @brief Default constructor for the test_runner class.
101
+ *
102
+ * @details
103
+ * The rule of five is enforced to prevent accidental copying or moving.
104
+ */
105
+ test_runner ();
106
+
107
+ /**
108
+ * @brief Deleted copy constructor to prevent copying.
109
+ */
110
+ test_runner (const test_runner&) = delete;
111
+
112
+ /**
113
+ * @brief Deleted move constructor to prevent moving.
114
+ */
115
+ test_runner (test_runner&&) = delete;
116
+
117
+ /**
118
+ * @brief Deleted copy assignment operator to prevent copying.
119
+ */
120
+ test_runner&
121
+ operator= (const test_runner&)
122
+ = delete;
123
+
124
+ /**
125
+ * @brief Deleted move assignment operator to prevent moving.
126
+ */
127
+ test_runner&
128
+ operator= (test_runner&&)
129
+ = delete;
130
+
131
+ /**
132
+ * @brief Destructor for the test_runner class.
133
+ */
134
+ ~test_runner () = default;
135
+
136
+ /**
137
+ * @brief Initialises the test runner with command-line arguments and an
138
+ * optional suite name.
139
+ *
140
+ * @param argc The argument count from main().
141
+ * @param argv The argument vector from main().
142
+ * @param name The name of the default test suite.
143
+ * @par Returns
144
+ * Nothing.
145
+ */
146
+ void
147
+ initialize (int argc, char* argv[], const char* name);
148
+
149
+ /**
150
+ * @brief Returns 0 if all tests were successful, 1 otherwise.
151
+ *
152
+ * @par Parameters
153
+ * None.
154
+ * @return Integer exit code representing the overall test result.
155
+ */
156
+ int
157
+ exit_code (void);
158
+
159
+ /**
160
+ * @brief Registers a test suite with the runner.
161
+ *
162
+ * @param suite Pointer to the test suite to register.
163
+ * @par Returns
164
+ * Nothing.
165
+ */
166
+ void
167
+ register_test_suite (test_suite_base* suite);
168
+
169
+ /**
170
+ * @brief Retrieves the name of the default test suite.
171
+ *
172
+ * @par Parameters
173
+ * None.
174
+ * @return The name of the default test suite as a constant character
175
+ * pointer.
176
+ */
177
+ constexpr const char*
178
+ name (void)
179
+ {
180
+ return default_suite_name_;
181
+ }
182
+
183
+ /**
184
+ * @brief Aborts test execution immediately.
185
+ *
186
+ * @par Parameters
187
+ * None.
188
+ * @par Returns
189
+ * Nothing.
190
+ */
191
+ [[noreturn]] void
192
+ abort (void);
193
+
194
+ protected:
195
+ /**
196
+ * @brief Stores the argument count passed to the test runner.
197
+ */
198
+ int argc_ = 0;
199
+
200
+ /**
201
+ * @brief Stores the argument vector passed to the test runner.
202
+ */
203
+ char** argv_ = nullptr;
204
+
205
+ /**
206
+ * @brief The name of the default test suite.
207
+ */
208
+ const char* default_suite_name_ = "Test";
209
+
210
+ /**
211
+ * @brief Pointer to the default test suite which groups the main tests.
212
+ */
213
+ test_suite_base* default_test_suite_;
214
+
215
+ /**
216
+ * @brief Pointer to the array of registered test suites.
217
+ *
218
+ * @details
219
+ * Statically initialised to zero as BSS, such that test suites defined as
220
+ * static objects in different compilation units can be automatically
221
+ * executed.
222
+ */
223
+ std::vector<test_suite_base*>* suites_;
224
+ };
225
+
226
+ // --------------------------------------------------------------------------
227
+ } // namespace micro_os_plus::micro_test_plus
228
+
229
+ #if defined(__GNUC__)
230
+ #pragma GCC diagnostic pop
231
+ #endif
232
+
233
+ // ----------------------------------------------------------------------------
234
+
235
+ #endif // __cplusplus
236
+
237
+ // ----------------------------------------------------------------------------
238
+
239
+ #endif // MICRO_TEST_PLUS_TEST_RUNNER_H_
240
+
241
+ // ----------------------------------------------------------------------------
@@ -0,0 +1,456 @@
1
+ /*
2
+ * This file is part of the µOS++ project (https://micro-os-plus.github.io/).
3
+ * Copyright (c) 2021-2026 Liviu Ionescu. All rights reserved.
4
+ *
5
+ * Permission to use, copy, modify, and/or distribute this software for any
6
+ * purpose is hereby granted, under the terms of the MIT license.
7
+ *
8
+ * If a copy of the license was not distributed with this file, it can be
9
+ * obtained from https://opensource.org/licenses/mit.
10
+ *
11
+ * Major parts of the code are inspired from v1.1.8 of the Boost UT project,
12
+ * released under the terms of the Boost Version 1.0 Software License,
13
+ * which can be obtained from https://www.boost.org/LICENSE_1_0.txt.
14
+ */
15
+
16
+ // ----------------------------------------------------------------------------
17
+
18
+ /**
19
+ * @file
20
+ * @brief C++ header file with declarations for the µTest++ test suite.
21
+ *
22
+ * @details
23
+ * This header provides the declarations for the test suite facilities used
24
+ * within the µTest++ framework. It defines the interfaces for constructing,
25
+ * registering, and managing test suites and their associated test cases. The
26
+ * core classes, `test_suite_base` and `test_suite`, offer mechanisms for
27
+ * tracking test case execution, managing counters for successful and failed
28
+ * checks, and supporting automated registration and discovery of test suites.
29
+ *
30
+ * The design ensures that test suites are non-copyable and non-movable,
31
+ * maintaining unique ownership and consistent state. Flexible support for
32
+ * callable objects enables a wide range of test suite definitions,
33
+ * facilitating expressive and maintainable test organisation across embedded
34
+ * and general C++ projects.
35
+ *
36
+ * All definitions reside within the `micro_os_plus::micro_test_plus`
37
+ * namespace, ensuring clear separation from user code and minimising the risk
38
+ * of naming conflicts.
39
+ *
40
+ * The header files are organised within the
41
+ * `include/micro-os-plus/micro-test-plus` folder to maintain a structured and
42
+ * modular codebase.
43
+ *
44
+ * This file is intended solely for internal use within the framework and
45
+ * should not be included directly by user code.
46
+ */
47
+
48
+ #ifndef MICRO_TEST_PLUS_TEST_SUITE_H_
49
+ #define MICRO_TEST_PLUS_TEST_SUITE_H_
50
+
51
+ // ----------------------------------------------------------------------------
52
+
53
+ #ifdef __cplusplus
54
+
55
+ // ----------------------------------------------------------------------------
56
+
57
+ #include <functional>
58
+
59
+ // ----------------------------------------------------------------------------
60
+
61
+ #if defined(__GNUC__)
62
+ #pragma GCC diagnostic push
63
+ #pragma GCC diagnostic ignored "-Wpadded"
64
+ #if !defined(__clang__) // GCC only
65
+ #pragma GCC diagnostic ignored "-Wsuggest-final-types"
66
+ #pragma GCC diagnostic ignored "-Wsuggest-final-methods"
67
+ #endif
68
+ #if defined(__clang__)
69
+ #pragma clang diagnostic ignored "-Wc++98-compat"
70
+ #endif
71
+ #endif
72
+
73
+ namespace micro_os_plus::micro_test_plus
74
+ {
75
+ // --------------------------------------------------------------------------
76
+
77
+ /**
78
+ * @brief Base class for all test suites.
79
+ *
80
+ * @details
81
+ * The `test_suite_base` class provides the foundational interface for
82
+ * managing test suites within the µTest++ framework. It maintains counters
83
+ * for successful and failed checks, tracks test cases, and offers methods
84
+ * for marking the commencement and completion of test cases and suites.
85
+ *
86
+ * This class ensures consistent state management and reporting for all
87
+ * derived test suites. It also provides utility methods for querying the
88
+ * suite's name, the number of successful and failed checks, the number of
89
+ * test cases, and the overall result of the suite.
90
+ *
91
+ * All members and methods are defined within the
92
+ * `micro_os_plus::micro_test_plus` namespace, ensuring clear separation from
93
+ * user code and minimising the risk of naming conflicts.
94
+ *
95
+ * @headerfile micro-test-plus.h <micro-os-plus/micro-test-plus.h>
96
+ */
97
+ class test_suite_base
98
+ {
99
+ public:
100
+ /**
101
+ * @brief Constructs a test suite.
102
+ *
103
+ * @param [in] name The test suite name.
104
+ *
105
+ * @details
106
+ * The rule of five is enforced to prevent accidental copying or moving.
107
+ */
108
+ test_suite_base (const char* name);
109
+
110
+ /**
111
+ * @brief Deleted copy constructor to prevent copying.
112
+ */
113
+ test_suite_base (const test_suite_base&) = delete;
114
+
115
+ /**
116
+ * @brief Deleted move constructor to prevent moving.
117
+ */
118
+ test_suite_base (test_suite_base&&) = delete;
119
+
120
+ /**
121
+ * @brief Deleted copy assignment operator to prevent copying.
122
+ */
123
+ test_suite_base&
124
+ operator= (const test_suite_base&)
125
+ = delete;
126
+
127
+ /**
128
+ * @brief Deleted move assignment operator to prevent moving.
129
+ */
130
+ test_suite_base&
131
+ operator= (test_suite_base&&)
132
+ = delete;
133
+
134
+ /**
135
+ * @brief Virtual destructor for the test_suite_base class.
136
+ */
137
+ virtual ~test_suite_base ();
138
+
139
+ /**
140
+ * @brief Runs the sequence of test cases in the suite.
141
+ *
142
+ * @par Parameters
143
+ * None.
144
+ * @par Returns
145
+ * Nothing.
146
+ */
147
+ virtual void
148
+ run (void);
149
+
150
+ /**
151
+ * @brief Marks the beginning of a named test case.
152
+ *
153
+ * @param [in] name The test case name.
154
+ * @par Returns
155
+ * Nothing.
156
+ */
157
+ void
158
+ begin_test_case (const char* name);
159
+
160
+ /**
161
+ * @brief Marks the end of a test case.
162
+ *
163
+ * @par Parameters
164
+ * None.
165
+ * @par Returns
166
+ * Nothing. */
167
+ void
168
+ end_test_case (void);
169
+
170
+ /**
171
+ * @brief Gets the suite name.
172
+ *
173
+ * @par Parameters
174
+ * None.
175
+ * @return A pointer to the null-terminated test suite name.
176
+ */
177
+ [[nodiscard]] constexpr const char*
178
+ name (void)
179
+ {
180
+ return name_;
181
+ }
182
+
183
+ /**
184
+ * @brief Increments the count of passed test conditions.
185
+ *
186
+ * @par Parameters
187
+ * None.
188
+ * @par Returns
189
+ * Nothing.
190
+ */
191
+ void
192
+ increment_successful (void);
193
+
194
+ /**
195
+ * @brief Increments the count of failed test conditions.
196
+ *
197
+ * @par Parameters
198
+ * None.
199
+ * @par Returns
200
+ * Nothing.
201
+ */
202
+ void
203
+ increment_failed (void);
204
+
205
+ /**
206
+ * @brief Gets the number of conditions that passed.
207
+ *
208
+ * @par Parameters
209
+ * None.
210
+ * @return An integer with the number of checks that passed.
211
+ */
212
+ [[nodiscard]] constexpr int
213
+ successful_checks (void)
214
+ {
215
+ return successful_checks_;
216
+ }
217
+
218
+ /**
219
+ * @brief Gets the number of test conditions that failed.
220
+ *
221
+ * @par Parameters
222
+ * None.
223
+ * @return An integer with the number of checks that failed.
224
+ */
225
+ [[nodiscard]] constexpr int
226
+ failed_checks (void)
227
+ {
228
+ return failed_checks_;
229
+ }
230
+
231
+ /**
232
+ * @brief Gets the number of test cases.
233
+ *
234
+ * @par Parameters
235
+ * None.
236
+ * @return An integer with the number of test cases.
237
+ */
238
+ [[nodiscard]] constexpr int
239
+ test_cases (void)
240
+ {
241
+ return test_cases_;
242
+ }
243
+
244
+ /**
245
+ * @brief Begins the execution of the test suite.
246
+ *
247
+ * @par Parameters
248
+ * None.
249
+ * @par Returns
250
+ * Nothing.
251
+ */
252
+ void
253
+ begin_test_suite (void);
254
+
255
+ /**
256
+ * @brief Marks the end of the test suite.
257
+ *
258
+ * @par Parameters
259
+ * None.
260
+ * @par Returns
261
+ * Nothing.
262
+ */
263
+ void
264
+ end_test_suite (void);
265
+
266
+ /**
267
+ * @brief Gets the test suite result.
268
+ *
269
+ * @par Parameters
270
+ * None.
271
+ * @return True if the test suite was successful.
272
+ */
273
+ [[nodiscard]] constexpr bool
274
+ was_successful (void)
275
+ {
276
+ // Also fail if none passed.
277
+ return (failed_checks_ == 0 && successful_checks_ != 0);
278
+ }
279
+
280
+ /**
281
+ * @brief Checks if the test suite was not used.
282
+ *
283
+ * @par Parameters
284
+ * None.
285
+ * @return True if the test suite is not used.
286
+ */
287
+ [[nodiscard]] constexpr bool
288
+ unused (void)
289
+ {
290
+ return (failed_checks_ == 0 && successful_checks_ == 0
291
+ && test_cases_ == 0);
292
+ }
293
+
294
+ protected:
295
+ /**
296
+ * @brief The test suite name.
297
+ */
298
+ const char* name_;
299
+
300
+ /**
301
+ * @brief The current test case name.
302
+ */
303
+ const char* test_case_name_;
304
+
305
+ /**
306
+ * @brief Count of test conditions that passed.
307
+ */
308
+ int successful_checks_ = 0;
309
+
310
+ /**
311
+ * @brief Count of test conditions that failed.
312
+ */
313
+ int failed_checks_ = 0;
314
+
315
+ /**
316
+ * @brief Count of test cases in the test suite.
317
+ */
318
+ int test_cases_ = 0;
319
+
320
+ public:
321
+ /**
322
+ * @brief Indicates whether to process deferred begin for test cases.
323
+ */
324
+ bool process_deferred_begin = true;
325
+
326
+ /**
327
+ * @brief Structure holding the current test case's check counters.
328
+ *
329
+ * @details
330
+ * Tracks the number of successful and failed checks for the currently
331
+ * running test case.
332
+ */
333
+ struct
334
+ {
335
+ /**
336
+ * @brief Number of successful checks in the current test case.
337
+ */
338
+ int successful_checks;
339
+
340
+ /**
341
+ * @brief Number of failed checks in the current test case.
342
+ */
343
+ int failed_checks;
344
+ } current_test_case{};
345
+ };
346
+
347
+ /**
348
+ * @ingroup micro-test-plus-test-suites
349
+ * @brief Represents a named group of test cases that self-register to the
350
+ * runner.
351
+ *
352
+ * @details
353
+ * The `test_suite` class extends `test_suite_base` and enables the
354
+ * registration and execution of callable objects (such as lambdas or
355
+ * function pointers) as test suites. Upon construction, each test suite
356
+ * automatically registers itself with the test runner, facilitating
357
+ * automated test discovery and execution across different components and
358
+ * folders of a project.
359
+ *
360
+ * This class template provides a flexible mechanism for grouping related
361
+ * test cases and managing their execution within the µTest++ framework. It
362
+ * ensures that test suites are non-copyable and non-movable, maintaining
363
+ * unique ownership and consistent state.
364
+ *
365
+ * All members and methods are defined within the
366
+ * `micro_os_plus::micro_test_plus` namespace, ensuring clear separation from
367
+ * user code and minimising the risk of naming conflicts.
368
+ *
369
+ * @headerfile micro-test-plus.h <micro-os-plus/micro-test-plus.h>
370
+ */
371
+ class test_suite : public test_suite_base
372
+ {
373
+ public:
374
+ /**
375
+ * @brief Class template constructor for test_suite.
376
+ *
377
+ * @tparam Callable_T The type of a callable object.
378
+ * @tparam Args_T The types of the callable arguments.
379
+ *
380
+ * @param [in] name The test case name or description, used in reports.
381
+ * @param [in] callable A generic callable object, usually a lambda,
382
+ * invoked to perform the test.
383
+ * @param [in] arguments A possibly empty list of arguments to be passed to
384
+ * the callable.
385
+ *
386
+ * @details
387
+ * The rule of five is enforced to prevent accidental copying or moving.
388
+ */
389
+ template <typename Callable_T, typename... Args_T>
390
+ test_suite (const char* name, Callable_T&& callable,
391
+ Args_T&&... arguments);
392
+
393
+ /**
394
+ * @brief Deleted copy constructor to prevent copying.
395
+ */
396
+ test_suite (const test_suite&) = delete;
397
+
398
+ /**
399
+ * @brief Deleted move constructor to prevent moving.
400
+ */
401
+ test_suite (test_suite&&) = delete;
402
+
403
+ /**
404
+ * @brief Deleted copy assignment operator to prevent copying.
405
+ */
406
+ test_suite&
407
+ operator= (const test_suite&)
408
+ = delete;
409
+
410
+ /**
411
+ * @brief Deleted move assignment operator to prevent moving.
412
+ */
413
+ test_suite&
414
+ operator= (test_suite&&)
415
+ = delete;
416
+
417
+ /**
418
+ * @brief Virtual destructor for the test_suite class.
419
+ */
420
+ virtual ~test_suite () override;
421
+
422
+ /**
423
+ * @brief Runs the sequence of test cases in the suite by invoking the
424
+ * stored callable.
425
+ *
426
+ * @par Parameters
427
+ * None.
428
+ * @par Returns
429
+ * Nothing.
430
+ */
431
+ virtual void
432
+ run (void) override;
433
+
434
+ protected:
435
+ /**
436
+ * @brief Callable object representing the test suite's execution logic.
437
+ */
438
+ std::function<void (void)> callable_;
439
+ };
440
+
441
+ // --------------------------------------------------------------------------
442
+ } // namespace micro_os_plus::micro_test_plus
443
+
444
+ #if defined(__GNUC__)
445
+ #pragma GCC diagnostic pop
446
+ #endif
447
+
448
+ // ----------------------------------------------------------------------------
449
+
450
+ #endif // __cplusplus
451
+
452
+ // ----------------------------------------------------------------------------
453
+
454
+ #endif // MICRO_TEST_PLUS_TEST_SUITE_H_
455
+
456
+ // ----------------------------------------------------------------------------