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 482 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 567 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 550 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 533 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 516 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 499 of file assert_compare.inl.