51#ifndef MICRO_OS_PLUS_MICRO_TEST_PLUS_EXTENSION_H_
52#define MICRO_OS_PLUS_MICRO_TEST_PLUS_EXTENSION_H_
56#if defined(__cplusplus)
60#if __has_include("micro-os-plus/project-config.h")
61#include "micro-os-plus/project-config.h"
64#if __has_include("micro-os-plus/micro-test-plus-defines.h")
65#include "micro-os-plus/micro-test-plus-defines.h"
79#pragma GCC diagnostic push
82#pragma clang diagnostic ignored "-Wc++98-compat"
83#pragma clang diagnostic ignored "-Wdocumentation"
84#pragma clang diagnostic ignored "-Wc++98-compat-pedantic"
159 requires std::is_same_v<std::remove_cv_t<T>,
bool>
174 template <
class T,
class Deleter_T>
175 requires std::is_same_v<std::remove_cv_t<T>,
bool>
176 struct is_bool_wrapper<std::unique_ptr<T, Deleter_T>> : std::true_type
190 requires std::is_same_v<std::remove_cv_t<T>,
bool>
191 struct is_bool_wrapper<std::shared_ptr<T>> : std::true_type
239 = std::is_array_v<T> or std::is_function_v<T>
240 or std::is_member_pointer_v<T>
241 or (std::is_pointer_v<T>
242 and (std::is_function_v<std::remove_pointer_t<T>>
244 std::remove_cv_t<std::remove_pointer_t<T>>,
char>
246 std::remove_cv_t<std::remove_pointer_t<T>>,
wchar_t>
248 std::remove_cv_t<std::remove_pointer_t<T>>,
char8_t>
250 std::remove_cv_t<std::remove_pointer_t<T>>,
char16_t>
252 std::remove_cv_t<std::remove_pointer_t<T>>,
char32_t>));
320 =
requires {
requires std::same_as<typename T::op_type, detail::op>; };
322#if defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_DEPRECATED_ENABLED)
368 template <
class Lhs_T,
class Rhs_T>
406 and
requires (
const T& t) { t ? true :
false; });
434 const T& value) { formatter << value; };
455 template <
class Tag_T,
class Lhs_T,
class Rhs_T>
456 concept compare_tag =
requires (
const Lhs_T& lhs,
const Rhs_T& rhs) {
457 requires printable<std::remove_cvref_t<
decltype (Tag_T::symbol)>>;
458 { Tag_T::apply (lhs, rhs) } -> std::convertible_to<bool>;
476 template <
class Tag_T,
class T>
478 requires printable<std::remove_cvref_t<
decltype (Tag_T::symbol)>>;
479 { Tag_T::apply (operand) } -> std::convertible_to<bool>;
490#if defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_DEPRECATED_ENABLED)
507 and
requires (
const T& t) { t ? true :
false; };
533 requires std::input_or_output_iterator<
decltype (t.begin ())>;
534 requires std::sentinel_for<
decltype (t.end ()),
decltype (t.begin ())>;
554 = std::convertible_to<const T&, std::basic_string_view<char>>
555 or std::convertible_to<const T&, std::basic_string_view<wchar_t>>
556 or std::convertible_to<const T&, std::basic_string_view<char8_t>>
557 or std::convertible_to<const T&, std::basic_string_view<char16_t>>
558 or std::convertible_to<const T&, std::basic_string_view<char32_t>>;
575 requires std::input_or_output_iterator<
decltype (begin (t))>;
576 requires std::sentinel_for<
decltype (end (t)),
decltype (begin (t))>;
611 using type = std::remove_cvref_t<
612 decltype (*std::declval<const T&> ().begin ())>;
634 = std::remove_cvref_t<decltype (*begin (std::declval<const T&> ()))>;
694 = std::is_class_v<T> and std::invocable<const T&>
695 and (not std::is_void_v<std::invoke_result_t<const T&>>)
696 and
extension::printable<std::invoke_result_t<const T&>>;
717 and not(std::is_class_v<T> and std::invocable<const T&>));
719#if defined(MICRO_OS_PLUS_MICRO_TEST_PLUS_DEPRECATED_ENABLED)
748#pragma GCC diagnostic pop
Concept satisfied by the wrappers of a bool, whose condition is ambiguous.
Concept satisfied when T provides both begin() and end() member functions returning an iterator and i...
Concept satisfied when T provides begin() and end() only as functions found by argument-dependent loo...
Concept satisfied when T is a framework compile-time constant.
Concept satisfied when T is a callable object that returns a printable message.
Concept satisfied when a type was accepted by expect() and require() before the exclusion of the susp...
Concept satisfied when T can be appended to the message of a check.
Concept satisfied when T is a string, convertible to a std::basic_string_view of a character type.
Concept satisfied when a type is contextually convertible to bool, but is most likely not a condition...
Concept satisfied when at least one of two types is a framework expression type.
Concept satisfied when a type can be used as a test expression in expect() or require().
Concept satisfied by a tag that defines a custom comparator.
Deprecated concept satisfied when T is a framework floating-point wrapper with a tolerance.
Concept satisfied when a type is a framework expression type.
Concept satisfied by a tag that defines a custom predicate.
Concept satisfied when a type can be appended to the message of a check result via operator<<.
Internal implementation details for the µTest++ framework.
The templates and the concepts for extending the µTest++ testing framework.
Primary namespace for the µTest++ testing framework.
Trait marking the wrappers of a bool, whose condition is ambiguous.
Empty base struct for the framework expression types.
op op_type
Marker identifying the framework expression types.
std::remove_cvref_t< decltype(*std::declval< const T & >().begin())> type
The element type, without references and qualifiers.
The type of the elements of a range, as iterated by a range-based for statement.
Struct template representing a generic value, accessible via a getter.