A range assumption/assertion validates whether a given value falls within a predefined range of acceptable values. This type of assertion is commonly used to ensure that input values, variables, or results do not exceed or fall below specific thresholds. Range assertions are especially useful for applications with strict data validation requirements, such as in user input validation or processing sensor data, where values must stay within acceptable limits to prevent errors or unexpected behavior.
Code reference for C, C++, or Python APIs for a respective Fossil Logic Project.
C, C++ REFERENCE #
/**
* @brief Assumes that the given value is within the specified range.
*
* @param value The value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_ITS_WITHIN_RANGE(value, min, max) \
FOSSIL_TEST_ASSUME((value) >= (min) && (value) <= (max), "Value " #value " is not within range [" #min ", " #max "]")
/**
* @brief Assumes that the given value is not within the specified range.
*
* @param value The value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_NOT_WITHIN_RANGE(value, min, max) \
FOSSIL_TEST_ASSUME((value) < (min) || (value) > (max), "Value " #value " is within range [" #min ", " #max "]")
// Unsigned integer type assumptions
/**
* @brief Assumes that the given 8-bit unsigned integer value is within the specified range.
*
* @param value The 8-bit unsigned integer value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_ITS_WITHIN_RANGE_U8(value, min, max) \
FOSSIL_TEST_ASSUME((uint8_t)(value) >= (uint8_t)(min) && (uint8_t)(value) <= (uint8_t)(max), "Value " #value " is not within range [" #min ", " #max "]")
/**
* @brief Assumes that the given 8-bit unsigned integer value is not within the specified range.
*
* @param value The 8-bit unsigned integer value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_NOT_WITHIN_RANGE_U8(value, min, max) \
FOSSIL_TEST_ASSUME((uint8_t)(value) < (uint8_t)(min) || (uint8_t)(value) > (uint8_t)(max), "Value " #value " is within range [" #min ", " #max "]")
/**
* @brief Assumes that the given 16-bit unsigned integer value is within the specified range.
*
* @param value The 16-bit unsigned integer value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_ITS_WITHIN_RANGE_U16(value, min, max) \
FOSSIL_TEST_ASSUME((uint16_t)(value) >= (uint16_t)(min) && (uint16_t)(value) <= (uint16_t)(max), "Value " #value " is not within range [" #min ", " #max "]")
/**
* @brief Assumes that the given 16-bit unsigned integer value is not within the specified range.
*
* @param value The 16-bit unsigned integer value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_NOT_WITHIN_RANGE_U16(value, min, max) \
FOSSIL_TEST_ASSUME((uint16_t)(value) < (uint16_t)(min) || (uint16_t)(value) > (uint16_t)(max), "Value " #value " is within range [" #min ", " #max "]")
/**
* @brief Assumes that the given 32-bit unsigned integer value is within the specified range.
*
* @param value The 32-bit unsigned integer value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_ITS_WITHIN_RANGE_U32(value, min, max) \
FOSSIL_TEST_ASSUME((uint32_t)(value) >= (uint32_t)(min) && (uint32_t)(value) <= (uint32_t)(max), "Value " #value " is not within range [" #min ", " #max "]")
/**
* @brief Assumes that the given 32-bit unsigned integer value is not within the specified range.
*
* @param value The 32-bit unsigned integer value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_NOT_WITHIN_RANGE_U32(value, min, max) \
FOSSIL_TEST_ASSUME((uint32_t)(value) < (uint32_t)(min) || (uint32_t)(value) > (uint32_t)(max), "Value " #value " is within range [" #min ", " #max "]")
/**
* @brief Assumes that the given 64-bit unsigned integer value is within the specified range.
*
* @param value The 64-bit unsigned integer value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_ITS_WITHIN_RANGE_U64(value, min, max) \
FOSSIL_TEST_ASSUME((uint64_t)(value) >= (uint64_t)(min) && (uint64_t)(value) <= (uint64_t)(max), "Value " #value " is not within range [" #min ", " #max "]")
/**
* @brief Assumes that the given 64-bit unsigned integer value is not within the specified range.
*
* @param value The 64-bit unsigned integer value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_NOT_WITHIN_RANGE_U64(value, min, max) \
FOSSIL_TEST_ASSUME((uint64_t)(value) < (uint64_t)(min) || (uint64_t)(value) > (uint64_t)(max), "Value " #value " is within range [" #min ", " #max "]")
/**
* @brief Assumes that the given 8-bit integer value is within the specified range.
*
* @param value The 8-bit integer value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_ITS_WITHIN_RANGE_I8(value, min, max) \
FOSSIL_TEST_ASSUME((int8_t)(value) >= (int8_t)(min) && (int8_t)(value) <= (int8_t)(max), "Value " #value " is not within range [" #min ", " #max "]")
/**
* @brief Assumes that the given 8-bit integer value is not within the specified range.
*
* @param value The 8-bit integer value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_NOT_WITHIN_RANGE_I8(value, min, max) \
FOSSIL_TEST_ASSUME((int8_t)(value) < (int8_t)(min) || (int8_t)(value) > (int8_t)(max), "Value " #value " is within range [" #min ", " #max "]")
/**
* @brief Assumes that the given 16-bit integer value is within the specified range.
*
* @param value The 16-bit integer value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_ITS_WITHIN_RANGE_I16(value, min, max) \
FOSSIL_TEST_ASSUME((int16_t)(value) >= (int16_t)(min) && (int16_t)(value) <= (int16_t)(max), "Value " #value " is not within range [" #min ", " #max "]")
/**
* @brief Assumes that the given 16-bit integer value is not within the specified range.
*
* @param value The 16-bit integer value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_NOT_WITHIN_RANGE_I16(value, min, max) \
FOSSIL_TEST_ASSUME((int16_t)(value) < (int16_t)(min) || (int16_t)(value) > (int16_t)(max), "Value " #value " is within range [" #min ", " #max "]")
/**
* @brief Assumes that the given 32-bit integer value is within the specified range.
*
* @param value The 32-bit integer value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_ITS_WITHIN_RANGE_I32(value, min, max) \
FOSSIL_TEST_ASSUME((int32_t)(value) >= (int32_t)(min) && (int32_t)(value) <= (int32_t)(max), "Value " #value " is not within range [" #min ", " #max "]")
/**
* @brief Assumes that the given 32-bit integer value is not within the specified range.
*
* @param value The 32-bit integer value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_NOT_WITHIN_RANGE_I32(value, min, max) \
FOSSIL_TEST_ASSUME((int32_t)(value) < (int32_t)(min) || (int32_t)(value) > (int32_t)(max), "Value " #value " is within range [" #min ", " #max "]")
/**
* @brief Assumes that the given 64-bit integer value is within the specified range.
*
* @param value The 64-bit integer value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_ITS_WITHIN_RANGE_I64(value, min, max) \
FOSSIL_TEST_ASSUME((int64_t)(value) >= (int64_t)(min) && (int64_t)(value) <= (int64_t)(max), "Value " #value " is not within range [" #min ", " #max "]")
/**
* @brief Assumes that the given 64-bit integer value is not within the specified range.
*
* @param value The 64-bit integer value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_NOT_WITHIN_RANGE_I64(value, min, max) \
FOSSIL_TEST_ASSUME((int64_t)(value) < (int64_t)(min) || (int64_t)(value) > (int64_t)(max), "Value " #value " is within range [" #min ", " #max "]")
/**
* @brief Assumes that the given float value is within the specified range.
*
* @param value The float value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_ITS_WITHIN_RANGE_F32(value, min, max) \
FOSSIL_TEST_ASSUME((value) >= (min) && (value) <= (max), "Value " #value " is not within range [" #min ", " #max "]")
/**
* @brief Assumes that the given float value is not within the specified range.
*
* @param value The float value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_NOT_WITHIN_RANGE_F32(value, min, max) \
FOSSIL_TEST_ASSUME((value) < (min) || (value) > (max), "Value " #value " is within range [" #min ", " #max "]")
/**
* @brief Assumes that the given double value is within the specified range.
*
* @param value The double value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_ITS_WITHIN_RANGE_F64(value, min, max) \
FOSSIL_TEST_ASSUME((value) >= (min) && (value) <= (max), "Value " #value " is not within range [" #min ", " #max "]")
/**
* @brief Assumes that the given double value is not within the specified range.
*
* @param value The double value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_NOT_WITHIN_RANGE_F64(value, min, max) \
FOSSIL_TEST_ASSUME((value) < (min) || (value) > (max), "Value " #value " is within range [" #min ", " #max "]")
// Byte char type assumtions (uint8_t)
/**
* @brief Assumes that the given byte char value is within the specified range.
*
* @param value The byte char value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_ITS_WITHIN_RANGE_BCHAR(value, min, max) \
FOSSIL_TEST_ASSUME((uint8_t)(value) >= (uint8_t)(min) && (uint8_t)(value) <= (uint8_t)(max), "Value " #value " is not within range [" #min ", " #max "]")
/**
* @brief Assumes that the given byte char value is not within the specified range.
*
* @param value The byte char value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_NOT_WITHIN_RANGE_BCHAR(value, min, max) \
FOSSIL_TEST_ASSUME((uint8_t)(value) < (uint8_t)(min) || (uint8_t)(value) > (uint8_t)(max), "Value " #value " is within range [" #min ", " #max "]")
// Char type assumtions (char)
/**
* @brief Assumes that the given char value is within the specified range.
*
* @param value The char value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_ITS_WITHIN_RANGE_CCHAR(value, min, max) \
FOSSIL_TEST_ASSUME((char)(value) >= (char)(min) && (char)(value) <= (char)(max), "Value " #value " is not within range [" #min ", " #max "]")
/**
* @brief Assumes that the given char value is not within the specified range.
*
* @param value The char value to be evaluated.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
*/
#define ASSUME_NOT_WITHIN_RANGE_CCHAR(value, min, max) \
FOSSIL_TEST_ASSUME((char)(value) < (char)(min) || (char)(value) > (char)(max), "Value " #value " is within range [" #min ", " #max "]")PYTHON REFERENCE #
# TODO: add code here