micro-test-plus 6.0.0
µTest++ Testing Framework
Loading...
Searching...
No Matches
micro_os_plus::micro_test_plus::detail::and_op< Lhs_T, Rhs_T > Struct Template Reference

Logical AND comparator struct template. More...

#include "micro-os-plus/micro-test-plus.h"

Inheritance diagram for micro_os_plus::micro_test_plus::detail::and_op< Lhs_T, Rhs_T >:

Public Types

using op_type = op
 Marker identifying the framework expression types.

Public Member Functions

template<class L, class R>
constexpr and_op (L &&lhs, R &&rhs)
 Constructs a logical AND comparator for the given operands.
constexpr decltype(auto) lhs (void) const
 Retrieves the left-hand operand.
constexpr operator bool () const
 Conversion operator to boolean.
constexpr decltype(auto) rhs (void) const
 Retrieves the right-hand operand.

Private Attributes

Lhs_T lhs_
 Stores the left-hand operand.
Rhs_T rhs_
 Stores the right-hand operand.
const bool value_ {}
 Stores the result of the comparison.

Detailed Description

template<class Lhs_T, class Rhs_T>
struct micro_os_plus::micro_test_plus::detail::and_op< Lhs_T, Rhs_T >

Derived from binary_op, this struct combines two sub-expressions with a logical AND operation. It enables composition of complex checks by combining multiple conditions into a single logical whole, with reporting that shows the combined result and individual operand outcomes.

The temporaries are moved into the comparator, and the named sub-expressions are copied (see stored_operand_t).

Template Parameters
Lhs_TThe type of the stored left-hand sub-expression, either its type, or a const reference to it.
Rhs_TThe type of the stored right-hand sub-expression, either its type, or a const reference to it.

Definition at line 1082 of file detail.h.

Member Typedef Documentation

◆ op_type

Detected by the extension::is_op concept, and inherited by all types derived from op.

Definition at line 128 of file extension.h.

Constructor & Destructor Documentation

◆ and_op()

template<class Lhs_T, class Rhs_T>
template<class L, class R>
micro_os_plus::micro_test_plus::detail::and_op< Lhs_T, Rhs_T >::and_op ( L && lhs,
R && rhs )
constexpr

The result is computed from the arguments, before they are forwarded to the base.

Template Parameters
LThe type of the left-hand operand argument.
RThe type of the right-hand operand argument.
Parameters
lhsThe left-hand operand.
rhsThe right-hand operand.

Evaluates the logical conjunction static_cast<bool>(lhs) and static_cast<bool>(rhs) and passes the result to the binary_op base class constructor.

Definition at line 1041 of file detail-inlines.h.

1045 static_cast<bool> (lhs)
1046 and static_cast<bool> (rhs) }
1047 {
Logical AND comparator struct template.
Definition detail.h:1083
constexpr decltype(auto) lhs(void) const
Retrieves the left-hand operand.
constexpr binary_op(L &&lhs, R &&rhs, bool value)
Constructs a binary comparator with the given operands and pre-computed result.
constexpr decltype(auto) rhs(void) const
Retrieves the right-hand operand.

References micro_os_plus::micro_test_plus::detail::binary_op< Lhs_T, Rhs_T >::binary_op(), micro_os_plus::micro_test_plus::detail::binary_op< Lhs_T, Rhs_T >::lhs(), and micro_os_plus::micro_test_plus::detail::binary_op< Lhs_T, Rhs_T >::rhs().

Member Function Documentation

◆ lhs()

template<class Lhs_T, class Rhs_T>
decltype(auto) constexpr micro_os_plus::micro_test_plus::detail::binary_op< Lhs_T, Rhs_T >::lhs ( void ) const
nodiscardconstexprinherited

The operand is unwrapped with detail::unwrap() and returned by reference, so that formatting it does not copy it.

Parameters
None.
Returns
The extracted left-hand operand.

Returns the value of the left-hand operand, unwrapped by detail::unwrap() if it is a framework wrapper type; the stored operand is not copied.

Definition at line 181 of file detail-inlines.h.

182 {
183 return detail::unwrap (lhs_);
184 }
decltype(auto) constexpr unwrap(const T &t)
Returns the value wrapped by a framework type, or the operand itself.
Lhs_T lhs_
Stores the left-hand operand.
Definition detail.h:410

References lhs(), lhs_, and micro_os_plus::micro_test_plus::detail::unwrap().

Referenced by micro_os_plus::micro_test_plus::detail::and_op< Lhs_T, Rhs_T >::and_op(), micro_os_plus::micro_test_plus::detail::approx_op< Lhs_T, Rhs_T, Epsilon_T >::approx_op(), binary_op(), micro_os_plus::micro_test_plus::detail::compare_op< Lhs_T, Rhs_T, Compare_T >::compare_op(), micro_os_plus::micro_test_plus::detail::or_op< Lhs_T, Rhs_T >::or_op(), and lhs().

◆ operator bool()

template<class Lhs_T, class Rhs_T>
micro_os_plus::micro_test_plus::detail::binary_op< Lhs_T, Rhs_T >::operator bool ( ) const
nodiscardconstexprinherited
Parameters
None.
Returns
The result of the comparison.

Returns the pre-computed boolean result stored by the derived comparator's constructor.

Definition at line 167 of file detail-inlines.h.

169 {
170 return value_;
171 }
const bool value_
Stores the result of the comparison.
Definition detail.h:426

References binary_op(), and value_.

◆ rhs()

template<class Lhs_T, class Rhs_T>
decltype(auto) constexpr micro_os_plus::micro_test_plus::detail::binary_op< Lhs_T, Rhs_T >::rhs ( void ) const
nodiscardconstexprinherited

The operand is unwrapped with detail::unwrap() and returned by reference, so that formatting it does not copy it.

Parameters
None.
Returns
The extracted right-hand operand.

Returns the value of the right-hand operand, unwrapped by detail::unwrap() if it is a framework wrapper type; the stored operand is not copied.

Definition at line 194 of file detail-inlines.h.

195 {
196 return detail::unwrap (rhs_);
197 }
Rhs_T rhs_
Stores the right-hand operand.
Definition detail.h:418

References rhs(), rhs_, and micro_os_plus::micro_test_plus::detail::unwrap().

Referenced by micro_os_plus::micro_test_plus::detail::and_op< Lhs_T, Rhs_T >::and_op(), micro_os_plus::micro_test_plus::detail::approx_op< Lhs_T, Rhs_T, Epsilon_T >::approx_op(), binary_op(), micro_os_plus::micro_test_plus::detail::compare_op< Lhs_T, Rhs_T, Compare_T >::compare_op(), micro_os_plus::micro_test_plus::detail::or_op< Lhs_T, Rhs_T >::or_op(), and rhs().

Member Data Documentation

◆ lhs_

template<class Lhs_T, class Rhs_T>
Lhs_T micro_os_plus::micro_test_plus::detail::binary_op< Lhs_T, Rhs_T >::lhs_
privateinherited

A value, moved from a temporary or copied from a named operand, or, for a named operand that cannot be copied, a const reference to it (see stored_operand_t). It is not const, so that a temporary expression can be moved into an enclosing one.

Definition at line 410 of file detail.h.

Referenced by binary_op(), and lhs().

◆ rhs_

template<class Lhs_T, class Rhs_T>
Rhs_T micro_os_plus::micro_test_plus::detail::binary_op< Lhs_T, Rhs_T >::rhs_
privateinherited

Stored as the left-hand operand is.

Definition at line 418 of file detail.h.

Referenced by binary_op(), and rhs().

◆ value_

template<class Lhs_T, class Rhs_T>
const bool micro_os_plus::micro_test_plus::detail::binary_op< Lhs_T, Rhs_T >::value_ {}
privateinherited

Computed once, by the derived comparator constructor.

Definition at line 426 of file detail.h.

Referenced by binary_op(), and operator bool().


The documentation for this struct was generated from the following files: