Skip to main content

runner-inlines.h File

C++ header file with inline implementations for the µTest++ test runner. More...

Namespaces Index

namespacemicro_os_plus

The primary namespace for the µOS++ framework. More...

namespacemicro_test_plus

Primary namespace for the µTest++ testing framework. More...

Description

C++ header file with inline implementations for the µTest++ test runner.

This header provides the inline template implementation for runner::suite(), the method used to create and register a named test suite with a runner instance. The method constructs a suite object on the heap (wrapped in std::unique_ptr), transfers ownership to the runner via register_suite_(), and the newly created suite runs immediately as part of the registration process.

The implementation is separated into this inline header so that the template definition is visible at every call site without cluttering the main runner.h declaration file.

This file is intended solely for internal use within the framework and should not be included directly by user code.

File Listing

The file content with the documentation metadata removed is:

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 Software License,
13 * which can be obtained from https://www.boost.org/LICENSE_1_0.txt.
14 */
15
16// ----------------------------------------------------------------------------
17
38
39#ifndef MICRO_OS_PLUS_MICRO_TEST_PLUS_INLINES_RUNNER_INLINES_H_
40#define MICRO_OS_PLUS_MICRO_TEST_PLUS_INLINES_RUNNER_INLINES_H_
41
42// ----------------------------------------------------------------------------
43
44#if defined(__cplusplus)
45
46// ----------------------------------------------------------------------------
47
48#if __has_include("micro-os-plus/diag/trace.h")
49#include "micro-os-plus/diag/trace.h"
50#endif // __has_include("micro-os-plus/diag/trace.h")
51
52// ----------------------------------------------------------------------------
53
54#if defined(__GNUC__)
55#pragma GCC diagnostic push
56
57#pragma GCC diagnostic ignored "-Waggregate-return"
58#if defined(__clang__)
59#pragma clang diagnostic ignored "-Wunknown-warning-option"
60#pragma clang diagnostic ignored "-Wc++98-compat"
61#pragma clang diagnostic ignored "-Wc++98-compat-pedantic"
62#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
63#else // GCC only
64#pragma GCC diagnostic ignored "-Wredundant-tags"
65#endif // defined(__clang__)
66#endif // defined(__GNUC__)
67
68// ============================================================================
69
71{
72 // ==========================================================================
73
78 inline class reporter&
79 runner::reporter (void) const noexcept
80 {
81 return *reporter_;
82 }
83
89 runner::timings () noexcept
90 {
91 return timings_;
92 }
93
98 inline const detail::timestamps&
99 runner::timings () const noexcept
100 {
101 return timings_;
102 }
103
104 // --------------------------------------------------------------------------
105
113 template <typename Callable_T, typename... Args_T>
114 void
115 runner::suite (const char* name, Callable_T&& callable,
116 Args_T&&... arguments)
117 {
118#if defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_ENABLED)
119 trace::printf ("%s '%s'\n", __PRETTY_FUNCTION__, name);
120#endif // MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_ENABLED
121
122 auto child_suite = std::make_unique<class suite> (
123 name, *this, std::forward<Callable_T> (callable),
124 std::forward<Args_T> (arguments)...);
125
126 register_suite_ (std::move (child_suite));
127 }
128
129 // --------------------------------------------------------------------------
130} // namespace micro_os_plus::micro_test_plus
131
132#if defined(__GNUC__)
133#pragma GCC diagnostic pop
134#endif // defined(__GNUC__)
135
136// ----------------------------------------------------------------------------
137
138#endif // defined(__cplusplus)
139
140// ----------------------------------------------------------------------------
141
142#endif // MICRO_OS_PLUS_MICRO_TEST_PLUS_INLINES_RUNNER_INLINES_H_
143
144// ----------------------------------------------------------------------------

Generated via doxygen2docusaurus 2.2.2 by Doxygen 1.17.0.