Skip to main content

runner-inlines.h File

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

Included Headers

#include <micro-os-plus/diag/trace.h>

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_TEST_PLUS_TEST_RUNNER_INLINES_H_
40#define MICRO_TEST_PLUS_TEST_RUNNER_INLINES_H_
41
42// ----------------------------------------------------------------------------
43
44#ifdef __cplusplus
45
46// ----------------------------------------------------------------------------
47
48#include <micro-os-plus/diag/trace.h>
49
50// ----------------------------------------------------------------------------
51
52#if defined(__GNUC__)
53#pragma GCC diagnostic push
54#pragma GCC diagnostic ignored "-Waggregate-return"
55#if defined(__clang__)
56#pragma clang diagnostic ignored "-Wunknown-warning-option"
57#pragma clang diagnostic ignored "-Wc++98-compat"
58#pragma clang diagnostic ignored "-Wc++98-compat-pedantic"
59#else // GCC only
60#pragma GCC diagnostic ignored "-Wredundant-tags"
61#endif
62#endif
63
64// ============================================================================
65
67{
68 // ==========================================================================
69
74 inline class reporter&
75 runner::reporter (void) const noexcept
76 {
77 return *reporter_;
78 }
79
85 runner::timings () noexcept
86 {
87 return timings_;
88 }
89
94 inline const detail::timestamps&
95 runner::timings () const noexcept
96 {
97 return timings_;
98 }
99
100 // --------------------------------------------------------------------------
101
109 template <typename Callable_T, typename... Args_T>
110 void
111 runner::suite (const char* name, Callable_T&& callable,
112 Args_T&&... arguments)
113 {
114#if defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_ENABLED)
115#if defined(__GNUC__)
116#pragma GCC diagnostic push
117#if defined(__clang__)
118#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
119#endif
120#endif
121 trace::printf ("%s '%s'\n", __PRETTY_FUNCTION__, name);
122#if defined(__GNUC__)
123#pragma GCC diagnostic pop
124#endif
125#endif // MICRO_OS_PLUS_MICRO_TEST_PLUS_TRACE_ENABLED
126
127 auto child_suite = std::make_unique<class suite> (
128 name, *this, std::forward<Callable_T> (callable),
129 std::forward<Args_T> (arguments)...);
130
131 register_suite_ (std::move (child_suite));
132 }
133
134 // --------------------------------------------------------------------------
135} // namespace micro_os_plus::micro_test_plus
136
137#if defined(__GNUC__)
138#pragma GCC diagnostic pop
139#endif
140
141// ----------------------------------------------------------------------------
142
143#endif // __cplusplus
144
145// ----------------------------------------------------------------------------
146
147#endif // MICRO_TEST_PLUS_TEST_RUNNER_INLINES_H_
148
149// ----------------------------------------------------------------------------

Generated via doxygen2docusaurus 2.2.1 by Doxygen 1.17.0.