qxLib
Classes | Functions
assert_compare.h File Reference
#include <qx/algo/predicates.h>
#include <qx/containers/string/format.h>
#include <qx/containers/string/string_literal.h>
#include <functional>
#include <type_traits>
#include <utility>
#include <qx/asserts/assert_compare.inl>

Go to the source code of this file.

Classes

class  qx::details::assert_comparison< left_t, right_t, operation_t, bLeftIsLvalue, bRightIsLvalue >
 Lightweight assertion comparison object that preserves compared operand values for diagnostics. More...
 
struct  qx::predicates::validator< details::assert_comparison< left_t, right_t, operation_t, bLeftIsLvalue, bRightIsLvalue > >
 

Functions

template<class left_t , class right_t >
constexpr auto qx::assert_eq (left_t &&left, right_t &&right) noexcept(noexcept(details::assert_comparison< left_t, right_t, std::equal_to<>, std::is_lvalue_reference_v< left_t >, std::is_lvalue_reference_v< right_t >>(std::forward< left_t >(left), std::forward< right_t >(right))))
 Compare two values for equality and preserve values for assertion diagnostics. More...
 
template<class left_t , class right_t >
constexpr auto qx::assert_ne (left_t &&left, right_t &&right) noexcept(noexcept(details::assert_comparison< left_t, right_t, std::not_equal_to<>, std::is_lvalue_reference_v< left_t >, std::is_lvalue_reference_v< right_t >>(std::forward< left_t >(left), std::forward< right_t >(right))))
 Compare two values for inequality and preserve values for assertion diagnostics. More...
 
template<class left_t , class right_t >
constexpr auto qx::assert_lt (left_t &&left, right_t &&right) noexcept(noexcept(details::assert_comparison< left_t, right_t, std::less<>, std::is_lvalue_reference_v< left_t >, std::is_lvalue_reference_v< right_t >>(std::forward< left_t >(left), std::forward< right_t >(right))))
 Compare whether left value is less than right value and preserve values for assertion diagnostics. More...
 
template<class left_t , class right_t >
constexpr auto qx::assert_le (left_t &&left, right_t &&right) noexcept(noexcept(details::assert_comparison< left_t, right_t, std::less_equal<>, std::is_lvalue_reference_v< left_t >, std::is_lvalue_reference_v< right_t >>(std::forward< left_t >(left), std::forward< right_t >(right))))
 Compare whether left value is less than or equal to right value and preserve values for assertion diagnostics. More...
 
template<class left_t , class right_t >
constexpr auto qx::assert_gt (left_t &&left, right_t &&right) noexcept(noexcept(details::assert_comparison< left_t, right_t, std::greater<>, std::is_lvalue_reference_v< left_t >, std::is_lvalue_reference_v< right_t >>(std::forward< left_t >(left), std::forward< right_t >(right))))
 Compare whether left value is greater than right value and preserve values for assertion diagnostics. More...
 
template<class left_t , class right_t >
constexpr auto qx::assert_ge (left_t &&left, right_t &&right) noexcept(noexcept(details::assert_comparison< left_t, right_t, std::greater_equal<>, std::is_lvalue_reference_v< left_t >, std::is_lvalue_reference_v< right_t >>(std::forward< left_t >(left), std::forward< right_t >(right))))
 Compare whether left value is greater than or equal to right value and preserve values for assertion diagnostics. More...
 

Detailed Description

Author
Khrapov
Date
19.05.2026

Definition in file assert_compare.h.

Function Documentation

◆ assert_eq()

template<class left_t , class right_t >
constexpr auto qx::assert_eq ( left_t &&  left,
right_t &&  right 
)
constexprnoexcept

Compare two values for equality and preserve values for assertion diagnostics.

When used in macro assertions, this allows you to see both the names and values of variables

Parameters
left- left operand
right- right operand
Return values
-assertion comparison object
QX_EXPECT(qx::assert_eq(nValue, nOther)); // "nValue [41] == nOther [42]"
#define QX_EXPECT(condition,...)
Verifies that the condition is true.
Definition: asserts.h:99

Definition at line 488 of file assert_compare.inl.

◆ assert_ge()

template<class left_t , class right_t >
constexpr auto qx::assert_ge ( left_t &&  left,
right_t &&  right 
)
constexprnoexcept

Compare whether left value is greater than or equal to right value and preserve values for assertion diagnostics.

When used in macro assertions, this allows you to see both the names and values of variables

Parameters
left- left operand
right- right operand
Return values
-assertion comparison object
QX_EXPECT(qx::assert_ge(nValue, nOther)); // "nValue [41] >= nOther [42]"

Definition at line 573 of file assert_compare.inl.

◆ assert_gt()

template<class left_t , class right_t >
constexpr auto qx::assert_gt ( left_t &&  left,
right_t &&  right 
)
constexprnoexcept

Compare whether left value is greater than right value and preserve values for assertion diagnostics.

When used in macro assertions, this allows you to see both the names and values of variables

Parameters
left- left operand
right- right operand
Return values
-assertion comparison object
QX_EXPECT(qx::assert_gt(nValue, nOther)); // "nValue [41] > nOther [42]"

Definition at line 556 of file assert_compare.inl.

◆ assert_le()

template<class left_t , class right_t >
constexpr auto qx::assert_le ( left_t &&  left,
right_t &&  right 
)
constexprnoexcept

Compare whether left value is less than or equal to right value and preserve values for assertion diagnostics.

When used in macro assertions, this allows you to see both the names and values of variables

Parameters
left- left operand
right- right operand
Return values
-assertion comparison object
QX_EXPECT(qx::assert_le(nOther, nValue)); // "nOther [42] <= nValue [41]"

Definition at line 539 of file assert_compare.inl.

◆ assert_lt()

template<class left_t , class right_t >
constexpr auto qx::assert_lt ( left_t &&  left,
right_t &&  right 
)
constexprnoexcept

Compare whether left value is less than right value and preserve values for assertion diagnostics.

When used in macro assertions, this allows you to see both the names and values of variables

Parameters
left- left operand
right- right operand
Return values
-assertion comparison object
QX_EXPECT(qx::assert_lt(nOther, nValue)); // "nOther [42] < nValue [41]"

Definition at line 522 of file assert_compare.inl.

◆ assert_ne()

template<class left_t , class right_t >
constexpr auto qx::assert_ne ( left_t &&  left,
right_t &&  right 
)
constexprnoexcept

Compare two values for inequality and preserve values for assertion diagnostics.

When used in macro assertions, this allows you to see both the names and values of variables

Parameters
left- left operand
right- right operand
Return values
-assertion comparison object
QX_EXPECT(qx::assert_ne(nValue, nSame); // "nValue [41] != nSame [41]"

Definition at line 505 of file assert_compare.inl.