Skip to main content

Logical Functions

Functions used to compose logical expressions in tests. 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...

Description

Functions used to compose logical expressions in tests.

The functions mt::_and(), mt::_or(), and mt::_not() combine multiple conditions, allowing expressive and concise test logic.

These function names are prefixed with an underscore to avoid clashes with language alternative tokens or related macros named and, or, and not. Using these logical functions allows developers to express compound conditions clearly and improve readability.

Example
 ts.test ("Check compound conditions", [] (auto& t) {
  t.expect (mt::_and (mt::eq (compute_answer (), 42),
  mt::eq (compute_float (), 42.0)));
 });

When operands are function comparators, use the overloaded logical operators &&, ||, and ! provided in the micro_test_plus::operators namespace for more natural logical expressions.

Functions

_and()

template <class Lhs_T, class Rhs_T>
auto micro_os_plus::micro_test_plus::_and (const Lhs_T & lhs, const Rhs_T & rhs)
nodiscard constexpr

Generic logical and operation.

Template Parameters
Lhs_T

Type of the left hand side operand.

Rhs_T

Type of the right hand side operand.

Parameters
[in] lhs

Left hand side operand.

[in] rhs

Right hand side operand.

Returns

An object that evaluates to true if both operand expressions are true.

The _and function template provides a generic logical conjunction for any expression types. It constructs a logical conjunction object that can be used within the µTest++ framework to assert that both given conditions are true. This function is typically used in test expectations and assertions to combine logical expressions or custom comparators.

The underscore in the function name is intentional to differentiate it from the standard logical and operator.

Definition at line 289 of file function-comparators-inlines.h.

289 _and (const Lhs_T& lhs, const Rhs_T& rhs)
290 {
291 return detail::and_<Lhs_T, Rhs_T>{ lhs, rhs };
292 }

_not()

template <class Expr_T>
auto micro_os_plus::micro_test_plus::_not (const Expr_T & expr)
nodiscard constexpr

Generic logical not operation.

Template Parameters
Expr_T

Type of the operand.

Parameters
[in] expr

Logical expression to be negated.

Returns

An object that evaluates to true if the operand is false.

The _not function template provides a generic logical negation for any expression type. It constructs a logical negator object that can be used within the µTest++ framework to assert that a given condition is false. This function is typically used in test expectations and assertions to invert logical expressions or custom comparators.

The underscore in the function name is intentional to differentiate it from the standard logical not operator.

Definition at line 271 of file function-comparators-inlines.h.

271 _not (const Expr_T& expr)
272 {
273 return detail::not_<Expr_T>{ expr };
274 }

_or()

template <class Lhs_T, class Rhs_T>
auto micro_os_plus::micro_test_plus::_or (const Lhs_T & lhs, const Rhs_T & rhs)
nodiscard constexpr

Generic logical or operation.

Template Parameters
Lhs_T

Type of the left hand side operand.

Rhs_T

Type of the right hand side operand.

Parameters
[in] lhs

Left hand side operand.

[in] rhs

Right hand side operand.

Returns

An object that evaluates to true if at least one of the operand expressions is true.

The _or function template provides a generic logical disjunction for any expression types. It constructs a logical disjunction object that can be used within the µTest++ framework to assert that at least one of the given conditions is true. This function is typically used in test expectations and assertions to combine logical expressions or custom comparators.

The underscore in the function name is intentional to differentiate it from the standard logical or operator.

Definition at line 307 of file function-comparators-inlines.h.

307 _or (const Lhs_T& lhs, const Rhs_T& rhs)
308 {
309 return detail::or_<Lhs_T, Rhs_T>{ lhs, rhs };
310 }

Generated via doxygen2docusaurus 2.2.0 by Doxygen 1.17.0.