Skip to main content

reporter-inlines.h File

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

Included Headers

#include <cstdio> #include <cstring>

Namespaces Index

namespacemicro_os_plus

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

namespacemicro_test_plus

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

Functions Index

detail::indent_tindent (size_t level)

Factory function that creates an indent_t manipulator. More...

Description

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

This header provides the inline implementations for the test reporting facilities used within the µTest++ framework. It defines the logic for formatting and outputting test results, including operator overloads for various value types, containers, and comparison expressions, as well as structured output for logical and exception-related assertions.

The implementations ensure that test outcomes are presented in a clear, consistent, and expressive manner, supporting both value and pointer semantics, and providing detailed diagnostics for both successful and failed test cases. Special attention is given to formatting, colour highlighting, and extensibility, enabling professional and readable test reports suitable for embedded and general C++ development.

All definitions reside within the micro_os_plus::micro_test_plus namespace, ensuring clear separation from user code and minimising the risk of naming conflicts.

The header files are organised within the include/micro-os-plus/micro-test-plus folder to maintain a structured and modular codebase.

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
48
49#ifndef MICRO_TEST_PLUS_TEST_REPORTER_INLINES_H_
50#define MICRO_TEST_PLUS_TEST_REPORTER_INLINES_H_
51
52// ----------------------------------------------------------------------------
53
54#ifdef __cplusplus
55
56// ----------------------------------------------------------------------------
57
58#include <cstdio>
59#include <cstring>
60
61// ----------------------------------------------------------------------------
62
63#if defined(__GNUC__)
64#pragma GCC diagnostic push
65#pragma GCC diagnostic ignored "-Waggregate-return"
66#if defined(__clang__)
67#pragma clang diagnostic ignored "-Wunknown-warning-option"
68#pragma clang diagnostic ignored "-Wc++98-compat"
69#pragma clang diagnostic ignored "-Wc++98-compat-pedantic"
70#endif
71#endif
72
73// ============================================================================
74
76{
77 // --------------------------------------------------------------------------
78
80 indent (size_t level)
81 {
82 return { level };
83 }
84
85 // ==========================================================================
86
91 inline auto
93 {
94 return verbosity_;
95 }
96
108 {
109 return expression_;
110 }
111
117 inline auto
118 reporter::colour_ (const bool cond) const
119 {
120 return cond ? colours_.pass : colours_.fail;
121 }
122
123 // --------------------------------------------------------------------------
124
143 template <typename T>
146 {
147 if (v == nullptr)
148 {
149 // Explicitly render null pointers as "0x0" to avoid platform-specific
150 // representations such as "(nil)" on Linux/glibc.
151 buffer_.append ("0x0");
152 return *this;
153 }
154#if defined(__GNUC__)
155#pragma GCC diagnostic push
156#if defined(__clang__)
157#pragma clang diagnostic ignored "-Wunsafe-buffer-usage-in-libc-call"
158#endif
159#endif
160 char buff[20];
161 snprintf (buff, sizeof (buff), "%p", reinterpret_cast<void*> (v));
162 buffer_.append (buff);
163#if defined(__GNUC__)
164#pragma GCC diagnostic pop
165#endif
166
167 return *this;
168 }
169
182 template <class T>
183 requires std::is_arithmetic_v<T>
186 {
188 return *this;
189 }
190
191 // --------------------------------------------------------------------------
192} // namespace micro_os_plus::micro_test_plus
193
194#if defined(__GNUC__)
195#pragma GCC diagnostic pop
196#endif
197
198// ----------------------------------------------------------------------------
199
200#endif // __cplusplus
201
202// ----------------------------------------------------------------------------
203
204#endif // MICRO_TEST_PLUS_TEST_REPORTER_INLINES_H_
205
206// ----------------------------------------------------------------------------

Generated via doxygen2docusaurus 2.2.1 by Doxygen 1.17.0.