Skip to main content

function-comparators.h File

C++ header file with declarations for the µTest++ function comparators. More...

Included Headers​

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​

template <class Lhs_T, class Rhs_T>
constexpr auto_and (const Lhs_T &lhs, const Rhs_T &rhs)

Generic logical and operation. More...

template <class Expr_T>
constexpr auto_not (const Expr_T &expr)

Generic logical not operation. More...

template <class Lhs_T, class Rhs_T>
constexpr auto_or (const Lhs_T &lhs, const Rhs_T &rhs)

Generic logical or operation. More...

template <class Lhs_T, class Rhs_T>
constexpr autoeq (const Lhs_T &lhs, const Rhs_T &rhs)

Generic equality comparator for non-pointer types. More...

template <class Lhs_T, class Rhs_T>
constexpr autoeq (Lhs_T *lhs, Rhs_T *rhs)

Pointer equality comparator for any pointer types. More...

template <class Lhs_T, class Rhs_T>
constexpr autoge (const Lhs_T &lhs, const Rhs_T &rhs)

Generic greater than or equal comparator. More...

template <class Lhs_T, class Rhs_T>
constexpr autoge (Lhs_T *lhs, Rhs_T *rhs)

Pointer greater than or equal comparator. More...

template <class Lhs_T, class Rhs_T>
constexpr autogt (const Lhs_T &lhs, const Rhs_T &rhs)

Generic greater than comparator. More...

template <class Lhs_T, class Rhs_T>
constexpr autogt (Lhs_T *lhs, Rhs_T *rhs)

Pointer greater than comparator. More...

template <class Lhs_T, class Rhs_T>
constexpr autole (const Lhs_T &lhs, const Rhs_T &rhs)

Generic less than or equal comparator. More...

template <class Lhs_T, class Rhs_T>
constexpr autole (Lhs_T *lhs, Rhs_T *rhs)

Pointer less than or equal comparator. More...

template <class Lhs_T, class Rhs_T>
constexpr autolt (const Lhs_T &lhs, const Rhs_T &rhs)

Generic less than comparator. More...

template <class Lhs_T, class Rhs_T>
constexpr autolt (Lhs_T *lhs, Rhs_T *rhs)

Pointer less than comparator. More...

template <class T>
constexpr T &mut (const T &t) noexcept

Generic mutator to remove const qualification from any type. More...

template <class Lhs_T, class Rhs_T>
constexpr autone (const Lhs_T &lhs, const Rhs_T &rhs)

Generic non-equality comparator. More...

template <class Lhs_T, class Rhs_T>
constexpr autone (Lhs_T *lhs, Rhs_T *rhs)

Pointer non-equality comparator. More...

Description​

C++ header file with declarations for the µTest++ function comparators.

This header provides the declarations for the function comparator templates and logical operators used within the µTest++ framework. It defines the interfaces for generic and pointer-based comparison functions, including equality, non-equality, greater than, less than, greater than or equal, and less than or equal. Additionally, it declares logical combinators such as conjunction (_and), disjunction (_or), and negation (_not), as well as a utility for safely removing constness from objects.

These comparators and logical operators enable expressive and type-safe test expectations and assertions, supporting both value and pointer semantics. The underscore-prefixed logical operators are intentionally named to avoid conflicts with standard operators and provide clear, readable test expressions.

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
49
50#ifndef MICRO_OS_PLUS_MICRO_TEST_PLUS_FUNCTION_COMPARATORS_H_
51#define MICRO_OS_PLUS_MICRO_TEST_PLUS_FUNCTION_COMPARATORS_H_
52
53// ----------------------------------------------------------------------------
54
55#if defined(__cplusplus)
56
57// ----------------------------------------------------------------------------
58
59#if __has_include("micro-os-plus/project-config.h")
60#include "micro-os-plus/project-config.h"
61#endif // __has_include("micro-os-plus/project-config.h")
62
63#if __has_include("micro-os-plus/micro-test-plus-defines.h")
64#include "micro-os-plus/micro-test-plus-defines.h"
65#endif // __has_include("micro-os-plus/micro-test-plus-defines.h")
66
67// ----------------------------------------------------------------------------
68
69#if defined(__GNUC__)
70#pragma GCC diagnostic push
71
72#pragma GCC diagnostic ignored "-Wpadded"
73#pragma GCC diagnostic ignored "-Waggregate-return"
74#if defined(__clang__)
75#pragma clang diagnostic ignored "-Wc++98-compat"
76#pragma clang diagnostic ignored "-Wpre-c++17-compat"
77#pragma clang diagnostic ignored "-Wunknown-warning-option"
78#endif // defined(__clang__)
79#endif // defined(__GNUC__)
80
81// ===========================================================================
82
84{
85 // --------------------------------------------------------------------------
86
98 template <class Lhs_T, class Rhs_T>
99 [[nodiscard]] constexpr auto
100 eq (const Lhs_T& lhs, const Rhs_T& rhs);
101
113 template <class Lhs_T, class Rhs_T>
114 [[nodiscard]] constexpr auto
115 eq (Lhs_T* lhs, Rhs_T* rhs);
116
128 template <class Lhs_T, class Rhs_T>
129 [[nodiscard]] constexpr auto
130 ne (const Lhs_T& lhs, const Rhs_T& rhs);
131
144 template <class Lhs_T, class Rhs_T>
145 [[nodiscard]] constexpr auto
146 ne (Lhs_T* lhs, Rhs_T* rhs);
147
159 template <class Lhs_T, class Rhs_T>
160 [[nodiscard]] constexpr auto
161 gt (const Lhs_T& lhs, const Rhs_T& rhs);
162
174 template <class Lhs_T, class Rhs_T>
175 [[nodiscard]] constexpr auto
176 gt (Lhs_T* lhs, Rhs_T* rhs);
177
190 template <class Lhs_T, class Rhs_T>
191 [[nodiscard]] constexpr auto
192 ge (const Lhs_T& lhs, const Rhs_T& rhs);
193
206 template <class Lhs_T, class Rhs_T>
207 [[nodiscard]] constexpr auto
208 ge (Lhs_T* lhs, Rhs_T* rhs);
209
222 template <class Lhs_T, class Rhs_T>
223 [[nodiscard]] constexpr auto
224 lt (const Lhs_T& lhs, const Rhs_T& rhs);
225
238 template <class Lhs_T, class Rhs_T>
239 [[nodiscard]] constexpr auto
240 lt (Lhs_T* lhs, Rhs_T* rhs);
241
254 template <class Lhs_T, class Rhs_T>
255 [[nodiscard]] constexpr auto
256 le (const Lhs_T& lhs, const Rhs_T& rhs);
257
270 template <class Lhs_T, class Rhs_T>
271 [[nodiscard]] constexpr auto
272 le (Lhs_T* lhs, Rhs_T* rhs);
273
283 template <class Expr_T>
284 [[nodiscard]] constexpr auto
285 _not (const Expr_T& expr);
286
299 template <class Lhs_T, class Rhs_T>
300 [[nodiscard]] constexpr auto
301 _and (const Lhs_T& lhs, const Rhs_T& rhs);
302
315 template <class Lhs_T, class Rhs_T>
316 [[nodiscard]] constexpr auto
317 _or (const Lhs_T& lhs, const Rhs_T& rhs);
318
328 template <class T>
329 [[nodiscard]] constexpr auto
330 mut (const T& t) noexcept -> T&;
331
332 // --------------------------------------------------------------------------
333} // namespace micro_os_plus::micro_test_plus
334
335#if defined(__GNUC__)
336#pragma GCC diagnostic pop
337#endif // defined(__GNUC__)
338
339// ----------------------------------------------------------------------------
340
341#endif // defined(__cplusplus)
342
343// ============================================================================
344// Templates, inlines & constexpr implementations.
345
347
348// ----------------------------------------------------------------------------
349
350#endif // MICRO_OS_PLUS_MICRO_TEST_PLUS_FUNCTION_COMPARATORS_H_
351
352// ----------------------------------------------------------------------------

Generated via doxygen2docusaurus 2.2.2 by Doxygen 1.17.0.