kaycxx-assert
C++ assertion library
Loading...
Searching...
No Matches
Classes | Functions
kaycxx::assert Namespace Reference

Assertion functions and related types. More...

Classes

class  assertion_error
 Thrown when an assertion fails. More...
 

Functions

template<typename Actual , typename Expected >
requires detail::close_supported<Actual, Expected>
void assert_close (Actual const &actual, Expected const &expected, int precision=2, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that two numeric values are close enough.
 
template<typename Actual , typename Expected >
requires detail::contains_supported<Actual, Expected>
void assert_contain (Actual const &actual, Expected const &expected, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that a string contains a substring or character, or that a range contains an element.
 
template<typename Actual , typename Expected >
requires detail::equals_supported<Actual, Expected>
void assert_equal (Actual const &actual, Expected const &expected, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that two values are equal.
 
void assert_false (bool actual, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that the argument is false.
 
template<detail::ordered_value T>
void assert_greater (T const &actual, T const &expected, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that the actual value is greater than the expected value.
 
template<detail::ordered_value T>
void assert_greater_or_equal (T const &actual, T const &expected, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that the actual value is greater than or equal to the expected value.
 
template<detail::ordered_value T>
void assert_less (T const &actual, T const &expected, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that the actual value is less than the expected value.
 
template<detail::ordered_value T>
void assert_less_or_equal (T const &actual, T const &expected, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that the actual value is less than or equal to the expected value.
 
template<detail::string_like T>
void assert_match (T const &actual, std::string_view pattern, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that the argument matches the given pattern.
 
template<detail::string_like T>
void assert_match (T const &actual, std::regex const &regex, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that the argument matches the given regular expression.
 
template<typename Actual , typename Expected >
requires detail::close_supported<Actual, Expected>
void assert_not_close (Actual const &actual, Expected const &expected, int precision=2, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that two numeric values are not close enough.
 
template<typename Actual , typename Expected >
requires detail::contains_supported<Actual, Expected>
void assert_not_contain (Actual const &actual, Expected const &expected, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that a string does not contain a substring or character, or that a range does not contain an element.
 
template<typename Actual , typename Expected >
requires detail::equals_supported<Actual, Expected>
void assert_not_equal (Actual const &actual, Expected const &expected, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that two values are not equal.
 
template<detail::string_like T>
void assert_not_match (T const &actual, std::string_view pattern, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that the argument does not match the given pattern.
 
template<detail::string_like T>
void assert_not_match (T const &actual, std::regex const &regex, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that the argument does not match the given regular expression.
 
template<detail::nullable T>
void assert_not_null (T const &actual, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that the argument is not null.
 
template<std::invocable Function>
void assert_not_throw (Function &&function, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that the function does not throw any exception.
 
template<detail::exception_type Exception, std::invocable Function>
void assert_not_throw (Function &&function, std::string_view unexpected_message, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that the function does not throw an exception of the given type with the exact unexpected message.
 
template<detail::exception_type Exception, std::invocable Function>
void assert_not_throw (Function &&function, std::regex const &unexpected_message, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that the function does not throw an exception of the given type with a message matching the regex.
 
template<detail::nullable T>
void assert_null (T const &actual, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that the argument is null.
 
template<detail::exception_type Exception, std::invocable Function>
void assert_throw (Function &&function, std::string_view expected_message, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that the function throws an exception of the expected type with the exact expected message.
 
template<detail::exception_type Exception, std::invocable Function>
void assert_throw (Function &&function, std::regex const &expected_message, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that the function throws an exception of the expected type with a message matching the regex.
 
void assert_true (bool actual, std::string_view reason={}, std::optional< std::source_location > location=KAYCXX_ASSERT_DEFAULT_SOURCE)
 Asserts that the argument is true.
 

Detailed Description

Assertion functions and related types.

Function Documentation

◆ assert_close()

template<typename Actual , typename Expected >
requires detail::close_supported<Actual, Expected>
void kaycxx::assert::assert_close ( Actual const actual,
Expected const expected,
int  precision = 2,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that two numeric values are close enough.

Values are close when they are equal after rounding to the given number of decimal digits. The default precision is 2 decimal digits.

Template Parameters
ActualThe actual value type.
ExpectedThe expected value type.
Parameters
actualThe actual value to check.
expectedThe expected value to compare to.
precisionThe number of decimal digits to round to before comparing.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the values are not close enough.

◆ assert_contain()

template<typename Actual , typename Expected >
requires detail::contains_supported<Actual, Expected>
void kaycxx::assert::assert_contain ( Actual const actual,
Expected const expected,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that a string contains a substring or character, or that a range contains an element.

String-like values use substring semantics. Other ranges use std::ranges::find and therefore check whether one element compares equal to the expected value.

Template Parameters
ActualThe actual value type.
ExpectedThe expected contained value type.
Parameters
actualThe actual value to check.
expectedThe expected contained value.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the actual value does not contain the expected value.

◆ assert_equal()

template<typename Actual , typename Expected >
requires detail::equals_supported<Actual, Expected>
void kaycxx::assert::assert_equal ( Actual const actual,
Expected const expected,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that two values are equal.

Non-string values must have the same unqualified type and are compared with operator==. C string forms may be compared with each other and with std::string or std::string_view values, and are compared by text content instead of pointer identity.

Template Parameters
ActualThe actual value type.
ExpectedThe expected value type.
Parameters
actualThe actual value to check.
expectedThe expected value to compare to.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the values are not equal.

◆ assert_false()

void kaycxx::assert::assert_false ( bool  actual,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that the argument is false.

Parameters
actualThe actual value to check.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the value is not false.

◆ assert_greater()

template<detail::ordered_value T>
void kaycxx::assert::assert_greater ( T const actual,
T const expected,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that the actual value is greater than the expected value.

The value type must provide a complete ordering. Raw pointers are rejected because their relational operators compare addresses instead of pointed-to values.

Template Parameters
TThe ordered value type.
Parameters
actualThe actual value to check.
expectedThe expected value to compare to.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the actual value is not greater than the expected value.

◆ assert_greater_or_equal()

template<detail::ordered_value T>
void kaycxx::assert::assert_greater_or_equal ( T const actual,
T const expected,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that the actual value is greater than or equal to the expected value.

The value type must provide a complete ordering. Raw pointers are rejected because their relational operators compare addresses instead of pointed-to values.

Template Parameters
TThe ordered value type.
Parameters
actualThe actual value to check.
expectedThe expected value to compare to.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the actual value is less than the expected value.

◆ assert_less()

template<detail::ordered_value T>
void kaycxx::assert::assert_less ( T const actual,
T const expected,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that the actual value is less than the expected value.

The value type must provide a complete ordering. Raw pointers are rejected because their relational operators compare addresses instead of pointed-to values.

Template Parameters
TThe ordered value type.
Parameters
actualThe actual value to check.
expectedThe expected value to compare to.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the actual value is not less than the expected value.

◆ assert_less_or_equal()

template<detail::ordered_value T>
void kaycxx::assert::assert_less_or_equal ( T const actual,
T const expected,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that the actual value is less than or equal to the expected value.

The value type must provide a complete ordering. Raw pointers are rejected because their relational operators compare addresses instead of pointed-to values.

Template Parameters
TThe ordered value type.
Parameters
actualThe actual value to check.
expectedThe expected value to compare to.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the actual value is greater than the expected value.

◆ assert_match() [1/2]

template<detail::string_like T>
void kaycxx::assert::assert_match ( T const actual,
std::regex const regex,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that the argument matches the given regular expression.

Template Parameters
TThe string-like value type.
Parameters
actualThe actual value to check.
regexThe regular expression to match.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the value does not match the regular expression.

◆ assert_match() [2/2]

template<detail::string_like T>
void kaycxx::assert::assert_match ( T const actual,
std::string_view  pattern,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that the argument matches the given pattern.

Template Parameters
TThe string-like value type.
Parameters
actualThe actual value to check.
patternThe pattern to match.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the value does not match the pattern.

◆ assert_not_close()

template<typename Actual , typename Expected >
requires detail::close_supported<Actual, Expected>
void kaycxx::assert::assert_not_close ( Actual const actual,
Expected const expected,
int  precision = 2,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that two numeric values are not close enough.

Values are close when they are equal after rounding to the given number of decimal digits. The default precision is 2 decimal digits.

Template Parameters
ActualThe actual value type.
ExpectedThe expected value type.
Parameters
actualThe actual value to check.
expectedThe expected value to compare to.
precisionThe number of decimal digits to round to before comparing.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the values are close enough.

◆ assert_not_contain()

template<typename Actual , typename Expected >
requires detail::contains_supported<Actual, Expected>
void kaycxx::assert::assert_not_contain ( Actual const actual,
Expected const expected,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that a string does not contain a substring or character, or that a range does not contain an element.

String-like values use substring semantics. Other ranges use std::ranges::find and therefore check whether one element compares equal to the expected value.

Template Parameters
ActualThe actual value type.
ExpectedThe unexpected contained value type.
Parameters
actualThe actual value to check.
expectedThe unexpected contained value.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the actual value contains the expected value.

◆ assert_not_equal()

template<typename Actual , typename Expected >
requires detail::equals_supported<Actual, Expected>
void kaycxx::assert::assert_not_equal ( Actual const actual,
Expected const expected,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that two values are not equal.

Non-string values must have the same unqualified type and are compared with operator==. C string forms may be compared with each other and with std::string or std::string_view values, and are compared by text content instead of pointer identity.

Template Parameters
ActualThe actual value type.
ExpectedThe expected value type.
Parameters
actualThe actual value to check.
expectedThe expected value to compare to.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the values are equal.

◆ assert_not_match() [1/2]

template<detail::string_like T>
void kaycxx::assert::assert_not_match ( T const actual,
std::regex const regex,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that the argument does not match the given regular expression.

Template Parameters
TThe string-like value type.
Parameters
actualThe actual value to check.
regexThe regular expression not to match.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the value matches the regular expression.

◆ assert_not_match() [2/2]

template<detail::string_like T>
void kaycxx::assert::assert_not_match ( T const actual,
std::string_view  pattern,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that the argument does not match the given pattern.

Template Parameters
TThe string-like value type.
Parameters
actualThe actual value to check.
patternThe pattern not to match.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the value matches the pattern.

◆ assert_not_null()

template<detail::nullable T>
void kaycxx::assert::assert_not_null ( T const actual,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that the argument is not null.

Template Parameters
TThe nullable value type.
Parameters
actualThe actual value to check.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the value is null.

◆ assert_not_throw() [1/3]

template<detail::exception_type Exception, std::invocable Function>
void kaycxx::assert::assert_not_throw ( Function &&  function,
std::regex const &  unexpected_message,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that the function does not throw an exception of the given type with a message matching the regex.

Derived exception types match the unexpected type, like instanceof in JavaScript. Other exception types or non-matching messages are allowed.

Template Parameters
ExceptionThe unexpected exception type.
FunctionThe function type.
Parameters
functionThe function to call.
unexpected_messageThe regular expression the exception message must not match.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the function throws the matching exception.

◆ assert_not_throw() [2/3]

template<std::invocable Function>
void kaycxx::assert::assert_not_throw ( Function &&  function,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that the function does not throw any exception.

Template Parameters
FunctionThe function type.
Parameters
functionThe function to call.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the function throws.

◆ assert_not_throw() [3/3]

template<detail::exception_type Exception, std::invocable Function>
void kaycxx::assert::assert_not_throw ( Function &&  function,
std::string_view  unexpected_message,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that the function does not throw an exception of the given type with the exact unexpected message.

Derived exception types match the unexpected type, like instanceof in JavaScript. Other exception types or different messages are allowed.

Template Parameters
ExceptionThe unexpected exception type.
FunctionThe function type.
Parameters
functionThe function to call.
unexpected_messageThe exact unexpected exception message.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the function throws the matching exception.

◆ assert_null()

template<detail::nullable T>
void kaycxx::assert::assert_null ( T const actual,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that the argument is null.

Template Parameters
TThe nullable value type.
Parameters
actualThe actual value to check.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the value is not null.

◆ assert_throw() [1/2]

template<detail::exception_type Exception, std::invocable Function>
void kaycxx::assert::assert_throw ( Function &&  function,
std::regex const expected_message,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that the function throws an exception of the expected type with a message matching the regex.

Derived exception types match the expected type, like instanceof in JavaScript. The expected exception type must derive from std::exception because assert_throw checks the thrown message through what().

Template Parameters
ExceptionThe expected exception type.
FunctionThe function type.
Parameters
functionThe function to call.
expected_messageThe regular expression the exception message must match.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the function does not throw, throws the wrong type, or throws a wrong message.

◆ assert_throw() [2/2]

template<detail::exception_type Exception, std::invocable Function>
void kaycxx::assert::assert_throw ( Function &&  function,
std::string_view  expected_message,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that the function throws an exception of the expected type with the exact expected message.

Derived exception types match the expected type, like instanceof in JavaScript. The expected exception type must derive from std::exception because assert_throw checks the thrown message through what().

Template Parameters
ExceptionThe expected exception type.
FunctionThe function type.
Parameters
functionThe function to call.
expected_messageThe exact expected exception message.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the function does not throw, throws the wrong type, or throws a wrong message.

◆ assert_true()

void kaycxx::assert::assert_true ( bool  actual,
std::string_view  reason = {},
std::optional< std::source_location >  location = KAYCXX_ASSERT_DEFAULT_SOURCE 
)

Asserts that the argument is true.

Parameters
actualThe actual value to check.
reasonOptional reason added to the assertion error.
locationOptional source location of the assertion call.
Exceptions
assertion_errorWhen the value is not true.