From fff58ccab3797667f77981f771bfe1c067960648 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 21 Apr 2026 22:19:11 +0000 Subject: [PATCH] Add Unity-based unit test infrastructure (Phase 1: 117 tests passing) Agent-Logs-Url: https://github.com/tbamud/tbamud/sessions/d5b86db2-e5ab-4729-b8b1-2ca7cf01c6b9 Co-authored-by: welcor <357770+welcor@users.noreply.github.com> --- CMakeLists.txt | 1 + cnf/configure.in | 2 +- configure | 2 +- tests/CMakeLists.txt | 95 + tests/Makefile | 82 + tests/Makefile.in | 81 + tests/test_class | Bin 0 -> 306080 bytes tests/test_class.c | 237 +++ tests/test_interpreter | Bin 0 -> 371576 bytes tests/test_interpreter.c | 256 +++ tests/test_random | Bin 0 -> 251840 bytes tests/test_random.c | 156 ++ tests/test_stubs.c | 507 +++++ tests/test_utils | Bin 0 -> 268752 bytes tests/test_utils.c | 482 +++++ tests/vendor/unity/unity.c | 2637 ++++++++++++++++++++++++++ tests/vendor/unity/unity.h | 698 +++++++ tests/vendor/unity/unity_internals.h | 1283 +++++++++++++ 18 files changed, 6517 insertions(+), 2 deletions(-) create mode 100644 tests/CMakeLists.txt create mode 100644 tests/Makefile create mode 100644 tests/Makefile.in create mode 100755 tests/test_class create mode 100644 tests/test_class.c create mode 100755 tests/test_interpreter create mode 100644 tests/test_interpreter.c create mode 100755 tests/test_random create mode 100644 tests/test_random.c create mode 100644 tests/test_stubs.c create mode 100755 tests/test_utils create mode 100644 tests/test_utils.c create mode 100644 tests/vendor/unity/unity.c create mode 100644 tests/vendor/unity/unity.h create mode 100644 tests/vendor/unity/unity_internals.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 78cd2af..990fe22 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -400,6 +400,7 @@ add_executable(circle ${SRC_FILES}) target_link_libraries(circle ${EXTRA_LIBS}) add_subdirectory(src/util) +add_subdirectory(tests) if (MEMORY_DEBUG) message(STATUS "MEMORY_DEBUG is activated, setting up zmalloc") diff --git a/cnf/configure.in b/cnf/configure.in index 1b4bc41..25ac35c 100644 --- a/cnf/configure.in +++ b/cnf/configure.in @@ -210,6 +210,6 @@ AC_CHECK_PROTO(unlink) AC_CHECK_PROTO(vsnprintf) AC_CHECK_PROTO(write) -AC_OUTPUT(src/Makefile src/util/Makefile) +AC_OUTPUT(src/Makefile src/util/Makefile tests/Makefile) # echo "Configuration completed. To compile, type: cd src; make" diff --git a/configure b/configure index 1aa45bf..9246902 100755 --- a/configure +++ b/configure @@ -5711,7 +5711,7 @@ EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 0000000..a88d4c9 --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,95 @@ +# tests/CMakeLists.txt +# Unity-based unit tests for tbaMUD +# +# Each test executable is built from: +# vendor/unity/unity.c — test framework +# test_stubs.c — weak-symbol stubs for all unresolved mud globals +# src/.c — the source file(s) under test +# test_.c — the test file itself +# +# Only the source files being tested are compiled — in particular comm.c +# (which contains main()) is never included. + +cmake_minimum_required(VERSION 3.12) + +enable_testing() + +# --------------------------------------------------------------------------- +# Common settings shared by all test targets +# --------------------------------------------------------------------------- + +set(UNITY_SRC ${CMAKE_CURRENT_SOURCE_DIR}/vendor/unity/unity.c) +set(STUBS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/test_stubs.c) + +set(MUD_SRCDIR ${CMAKE_SOURCE_DIR}/src) + +# Include paths: mud source dir for conf.h / structs.h etc., +# CMake binary dir for the generated conf.h (cmake builds place it there), +# and the Unity header dir. +set(TEST_INCLUDES + ${MUD_SRCDIR} + ${CMAKE_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/vendor/unity +) + +# Suppress warnings that fire in generated stubs / vendored code and in the +# mud sources when compiled outside their normal full-build context. +set(TEST_CFLAGS + -Wno-unused-parameter + -Wno-unused-function + -Wno-unused-variable +) + +# Helper macro: add_mud_test(name SRC1 [SRC2 …]) +# Creates an executable, registers it with CTest. +macro(add_mud_test TEST_NAME) + add_executable(${TEST_NAME} + ${UNITY_SRC} + ${STUBS_SRC} + ${ARGN} + ) + target_include_directories(${TEST_NAME} PRIVATE ${TEST_INCLUDES}) + target_compile_options(${TEST_NAME} PRIVATE ${TEST_CFLAGS}) + add_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME}) +endmacro() + +# --------------------------------------------------------------------------- +# test_utils — covers src/utils.c +# --------------------------------------------------------------------------- +add_mud_test(test_utils + ${MUD_SRCDIR}/utils.c + ${MUD_SRCDIR}/random.c + ${CMAKE_CURRENT_SOURCE_DIR}/test_utils.c +) + +# --------------------------------------------------------------------------- +# test_random — covers src/random.c and rand_number/dice in src/utils.c +# --------------------------------------------------------------------------- +add_mud_test(test_random + ${MUD_SRCDIR}/random.c + ${MUD_SRCDIR}/utils.c + ${CMAKE_CURRENT_SOURCE_DIR}/test_random.c +) + +# --------------------------------------------------------------------------- +# test_interpreter — covers string helpers in src/interpreter.c +# --------------------------------------------------------------------------- +add_mud_test(test_interpreter + ${MUD_SRCDIR}/interpreter.c + ${MUD_SRCDIR}/utils.c + ${MUD_SRCDIR}/random.c + ${CMAKE_CURRENT_SOURCE_DIR}/test_interpreter.c +) + +# crypt() is referenced from interpreter.c (nanny password hashing) +target_link_libraries(test_interpreter PRIVATE crypt) + +# --------------------------------------------------------------------------- +# test_class — covers src/class.c +# --------------------------------------------------------------------------- +add_mud_test(test_class + ${MUD_SRCDIR}/class.c + ${MUD_SRCDIR}/utils.c + ${MUD_SRCDIR}/random.c + ${CMAKE_CURRENT_SOURCE_DIR}/test_class.c +) diff --git a/tests/Makefile b/tests/Makefile new file mode 100644 index 0000000..614c7f5 --- /dev/null +++ b/tests/Makefile @@ -0,0 +1,82 @@ +# Generated automatically from Makefile.in by configure. +# tests/Makefile.in +# Autoconf template — processed by configure to produce tests/Makefile. +# +# Build and run the tbaMUD unit-test suite. +# Usage (after running ./configure from the project root): +# +# cd tests && make # build all test binaries +# cd tests && make test # build and run all tests + +CC = gcc +MYFLAGS = -Wall -Wno-char-subscripts -Wno-unused-but-set-variable +CFLAGS = -g -O2 $(MYFLAGS) +LIBS = -lcrypt + +SRCDIR = ../src +UNITYDIR = vendor/unity + +# Include paths: +# ../src — mud headers and the generated conf.h +# vendor/unity — Unity framework headers +INCFLAGS = -I$(SRCDIR) -I$(UNITYDIR) + +# Suppress warnings that fire in generated stubs / vendored code +WARNFLAGS = -Wno-unused-parameter -Wno-unused-function -Wno-unused-variable + +COMPILE = $(CC) $(CFLAGS) $(WARNFLAGS) $(INCFLAGS) + +# Common object files compiled into every test binary +UNITY_SRC = $(UNITYDIR)/unity.c +STUBS_SRC = test_stubs.c + +# tbaMUD source files used by the tests +UTILS_SRC = $(SRCDIR)/utils.c $(SRCDIR)/random.c + +# All test binaries +TESTS = test_utils test_random test_interpreter test_class + +.PHONY: all test clean + +all: $(TESTS) + +# --------------------------------------------------------------------------- +# test_utils — covers src/utils.c +# --------------------------------------------------------------------------- +test_utils: $(UNITY_SRC) $(STUBS_SRC) $(UTILS_SRC) test_utils.c + $(COMPILE) -o $@ $^ $(LIBS) + +# --------------------------------------------------------------------------- +# test_random — covers src/random.c and rand_number/dice in src/utils.c +# --------------------------------------------------------------------------- +test_random: $(UNITY_SRC) $(STUBS_SRC) $(UTILS_SRC) test_random.c + $(COMPILE) -o $@ $^ $(LIBS) + +# --------------------------------------------------------------------------- +# test_interpreter — covers string helpers in src/interpreter.c +# --------------------------------------------------------------------------- +test_interpreter: $(UNITY_SRC) $(STUBS_SRC) $(UTILS_SRC) \ + $(SRCDIR)/interpreter.c test_interpreter.c + $(COMPILE) -o $@ $^ $(LIBS) + +# --------------------------------------------------------------------------- +# test_class — covers src/class.c +# --------------------------------------------------------------------------- +test_class: $(UNITY_SRC) $(STUBS_SRC) $(UTILS_SRC) \ + $(SRCDIR)/class.c test_class.c + $(COMPILE) -o $@ $^ $(LIBS) + +# --------------------------------------------------------------------------- +# Run all tests +# --------------------------------------------------------------------------- +test: $(TESTS) + @echo "==========================================" + @echo "Running tbaMUD unit tests" + @echo "==========================================" + @./test_utils && echo "[PASS] test_utils" || echo "[FAIL] test_utils" + @./test_random && echo "[PASS] test_random" || echo "[FAIL] test_random" + @./test_interpreter && echo "[PASS] test_interpreter" || echo "[FAIL] test_interpreter" + @./test_class && echo "[PASS] test_class" || echo "[FAIL] test_class" + +clean: + rm -f $(TESTS) diff --git a/tests/Makefile.in b/tests/Makefile.in new file mode 100644 index 0000000..4cec776 --- /dev/null +++ b/tests/Makefile.in @@ -0,0 +1,81 @@ +# tests/Makefile.in +# Autoconf template — processed by configure to produce tests/Makefile. +# +# Build and run the tbaMUD unit-test suite. +# Usage (after running ./configure from the project root): +# +# cd tests && make # build all test binaries +# cd tests && make test # build and run all tests + +CC = @CC@ +MYFLAGS = @MYFLAGS@ +CFLAGS = @CFLAGS@ $(MYFLAGS) +LIBS = @LIBS@ @CRYPTLIB@ @NETLIB@ + +SRCDIR = ../src +UNITYDIR = vendor/unity + +# Include paths: +# ../src — mud headers and the generated conf.h +# vendor/unity — Unity framework headers +INCFLAGS = -I$(SRCDIR) -I$(UNITYDIR) + +# Suppress warnings that fire in generated stubs / vendored code +WARNFLAGS = -Wno-unused-parameter -Wno-unused-function -Wno-unused-variable + +COMPILE = $(CC) $(CFLAGS) $(WARNFLAGS) $(INCFLAGS) + +# Common object files compiled into every test binary +UNITY_SRC = $(UNITYDIR)/unity.c +STUBS_SRC = test_stubs.c + +# tbaMUD source files used by the tests +UTILS_SRC = $(SRCDIR)/utils.c $(SRCDIR)/random.c + +# All test binaries +TESTS = test_utils test_random test_interpreter test_class + +.PHONY: all test clean + +all: $(TESTS) + +# --------------------------------------------------------------------------- +# test_utils — covers src/utils.c +# --------------------------------------------------------------------------- +test_utils: $(UNITY_SRC) $(STUBS_SRC) $(UTILS_SRC) test_utils.c + $(COMPILE) -o $@ $^ $(LIBS) + +# --------------------------------------------------------------------------- +# test_random — covers src/random.c and rand_number/dice in src/utils.c +# --------------------------------------------------------------------------- +test_random: $(UNITY_SRC) $(STUBS_SRC) $(UTILS_SRC) test_random.c + $(COMPILE) -o $@ $^ $(LIBS) + +# --------------------------------------------------------------------------- +# test_interpreter — covers string helpers in src/interpreter.c +# --------------------------------------------------------------------------- +test_interpreter: $(UNITY_SRC) $(STUBS_SRC) $(UTILS_SRC) \ + $(SRCDIR)/interpreter.c test_interpreter.c + $(COMPILE) -o $@ $^ $(LIBS) + +# --------------------------------------------------------------------------- +# test_class — covers src/class.c +# --------------------------------------------------------------------------- +test_class: $(UNITY_SRC) $(STUBS_SRC) $(UTILS_SRC) \ + $(SRCDIR)/class.c test_class.c + $(COMPILE) -o $@ $^ $(LIBS) + +# --------------------------------------------------------------------------- +# Run all tests +# --------------------------------------------------------------------------- +test: $(TESTS) + @echo "==========================================" + @echo "Running tbaMUD unit tests" + @echo "==========================================" + @./test_utils && echo "[PASS] test_utils" || echo "[FAIL] test_utils" + @./test_random && echo "[PASS] test_random" || echo "[FAIL] test_random" + @./test_interpreter && echo "[PASS] test_interpreter" || echo "[FAIL] test_interpreter" + @./test_class && echo "[PASS] test_class" || echo "[FAIL] test_class" + +clean: + rm -f $(TESTS) diff --git a/tests/test_class b/tests/test_class new file mode 100755 index 0000000000000000000000000000000000000000..42f90ec3cdb9db87a4632d856a0df970627b95ba GIT binary patch literal 306080 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 yM4}RR8#eEtp=s+%^Xr#jI2oHq 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

hn|U7yi)lQ-^bPq6VKX&0F@M8m=UbV+ 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 aKaG8x)}Ots9TC}9`YRe(ep>=t(D+}4pxS`| literal 0 HcmV?d00001 diff --git a/tests/test_class.c b/tests/test_class.c new file mode 100644 index 0000000..17cc963 --- /dev/null +++ b/tests/test_class.c @@ -0,0 +1,237 @@ +/** + * @file test_class.c + * Unit tests for pure functions in src/class.c: + * parse_class, thaco, backstab_mult, level_exp + */ + +#include "unity.h" + +#include "conf.h" +#include "sysdep.h" +#include "structs.h" +#include "utils.h" +#include "class.h" + +extern FILE *logfile; + +void setUp(void) { logfile = stderr; } +void tearDown(void) { logfile = NULL; } + +/* ========================================================= + * parse_class + * ========================================================= */ + +void test_parse_class_magic_user_lowercase(void) +{ + TEST_ASSERT_EQUAL_INT(CLASS_MAGIC_USER, parse_class('m')); +} + +void test_parse_class_cleric_lowercase(void) +{ + TEST_ASSERT_EQUAL_INT(CLASS_CLERIC, parse_class('c')); +} + +void test_parse_class_warrior_lowercase(void) +{ + TEST_ASSERT_EQUAL_INT(CLASS_WARRIOR, parse_class('w')); +} + +void test_parse_class_thief_lowercase(void) +{ + TEST_ASSERT_EQUAL_INT(CLASS_THIEF, parse_class('t')); +} + +void test_parse_class_uppercase(void) +{ + TEST_ASSERT_EQUAL_INT(CLASS_MAGIC_USER, parse_class('M')); + TEST_ASSERT_EQUAL_INT(CLASS_CLERIC, parse_class('C')); + TEST_ASSERT_EQUAL_INT(CLASS_WARRIOR, parse_class('W')); + TEST_ASSERT_EQUAL_INT(CLASS_THIEF, parse_class('T')); +} + +void test_parse_class_invalid(void) +{ + TEST_ASSERT_EQUAL_INT(CLASS_UNDEFINED, parse_class('x')); + TEST_ASSERT_EQUAL_INT(CLASS_UNDEFINED, parse_class('?')); + TEST_ASSERT_EQUAL_INT(CLASS_UNDEFINED, parse_class(' ')); +} + +/* ========================================================= + * thaco + * ========================================================= */ + +void test_thaco_magic_user_level_1(void) +{ + TEST_ASSERT_EQUAL_INT(20, thaco(CLASS_MAGIC_USER, 1)); +} + +void test_thaco_magic_user_level_10(void) +{ + TEST_ASSERT_EQUAL_INT(17, thaco(CLASS_MAGIC_USER, 10)); +} + +void test_thaco_cleric_level_1(void) +{ + TEST_ASSERT_EQUAL_INT(20, thaco(CLASS_CLERIC, 1)); +} + +void test_thaco_warrior_level_1(void) +{ + TEST_ASSERT_EQUAL_INT(20, thaco(CLASS_WARRIOR, 1)); +} + +void test_thaco_warrior_level_20(void) +{ + TEST_ASSERT_EQUAL_INT(2, thaco(CLASS_WARRIOR, 20)); +} + +void test_thaco_warrior_high_level_is_one(void) +{ + /* Warriors hit thac0=1 around level 21 and stay there */ + TEST_ASSERT_EQUAL_INT(1, thaco(CLASS_WARRIOR, 21)); + TEST_ASSERT_EQUAL_INT(1, thaco(CLASS_WARRIOR, LVL_IMPL)); +} + +void test_thaco_thief_level_1(void) +{ + TEST_ASSERT_EQUAL_INT(20, thaco(CLASS_THIEF, 1)); +} + +/* ========================================================= + * backstab_mult + * ========================================================= */ + +void test_backstab_mult_level_1(void) +{ + TEST_ASSERT_EQUAL_INT(2, backstab_mult(1)); +} + +void test_backstab_mult_level_7(void) +{ + TEST_ASSERT_EQUAL_INT(2, backstab_mult(7)); +} + +void test_backstab_mult_level_8(void) +{ + TEST_ASSERT_EQUAL_INT(3, backstab_mult(8)); +} + +void test_backstab_mult_level_13(void) +{ + TEST_ASSERT_EQUAL_INT(3, backstab_mult(13)); +} + +void test_backstab_mult_level_14(void) +{ + TEST_ASSERT_EQUAL_INT(4, backstab_mult(14)); +} + +void test_backstab_mult_level_20(void) +{ + TEST_ASSERT_EQUAL_INT(4, backstab_mult(20)); +} + +void test_backstab_mult_level_21(void) +{ + TEST_ASSERT_EQUAL_INT(5, backstab_mult(21)); +} + +void test_backstab_mult_immortal(void) +{ + TEST_ASSERT_EQUAL_INT(20, backstab_mult(LVL_IMMORT)); +} + +/* ========================================================= + * level_exp + * ========================================================= */ + +void test_level_exp_magic_user_level_0(void) +{ + TEST_ASSERT_EQUAL_INT(0, level_exp(CLASS_MAGIC_USER, 0)); +} + +void test_level_exp_magic_user_level_1(void) +{ + TEST_ASSERT_EQUAL_INT(1, level_exp(CLASS_MAGIC_USER, 1)); +} + +void test_level_exp_magic_user_level_2(void) +{ + TEST_ASSERT_EQUAL_INT(2500, level_exp(CLASS_MAGIC_USER, 2)); +} + +void test_level_exp_cleric_level_1(void) +{ + TEST_ASSERT_EQUAL_INT(1, level_exp(CLASS_CLERIC, 1)); +} + +void test_level_exp_thief_level_1(void) +{ + TEST_ASSERT_EQUAL_INT(1, level_exp(CLASS_THIEF, 1)); +} + +void test_level_exp_warrior_level_1(void) +{ + TEST_ASSERT_EQUAL_INT(1, level_exp(CLASS_WARRIOR, 1)); +} + +void test_level_exp_invalid_level_returns_zero(void) +{ + /* Level > LVL_IMPL or level < 0 → logs error and returns 0 */ + TEST_ASSERT_EQUAL_INT(0, level_exp(CLASS_MAGIC_USER, -1)); + TEST_ASSERT_EQUAL_INT(0, level_exp(CLASS_MAGIC_USER, LVL_IMPL + 1)); +} + +void test_level_exp_immortal_level(void) +{ + /* LVL_IMMORT for mage → 8000000 */ + TEST_ASSERT_EQUAL_INT(8000000, level_exp(CLASS_MAGIC_USER, LVL_IMMORT)); +} + +/* ========================================================= + * main + * ========================================================= */ + +int main(void) +{ + UNITY_BEGIN(); + + /* parse_class */ + RUN_TEST(test_parse_class_magic_user_lowercase); + RUN_TEST(test_parse_class_cleric_lowercase); + RUN_TEST(test_parse_class_warrior_lowercase); + RUN_TEST(test_parse_class_thief_lowercase); + RUN_TEST(test_parse_class_uppercase); + RUN_TEST(test_parse_class_invalid); + + /* thaco */ + RUN_TEST(test_thaco_magic_user_level_1); + RUN_TEST(test_thaco_magic_user_level_10); + RUN_TEST(test_thaco_cleric_level_1); + RUN_TEST(test_thaco_warrior_level_1); + RUN_TEST(test_thaco_warrior_level_20); + RUN_TEST(test_thaco_warrior_high_level_is_one); + RUN_TEST(test_thaco_thief_level_1); + + /* backstab_mult */ + RUN_TEST(test_backstab_mult_level_1); + RUN_TEST(test_backstab_mult_level_7); + RUN_TEST(test_backstab_mult_level_8); + RUN_TEST(test_backstab_mult_level_13); + RUN_TEST(test_backstab_mult_level_14); + RUN_TEST(test_backstab_mult_level_20); + RUN_TEST(test_backstab_mult_level_21); + RUN_TEST(test_backstab_mult_immortal); + + /* level_exp */ + RUN_TEST(test_level_exp_magic_user_level_0); + RUN_TEST(test_level_exp_magic_user_level_1); + RUN_TEST(test_level_exp_magic_user_level_2); + RUN_TEST(test_level_exp_cleric_level_1); + RUN_TEST(test_level_exp_thief_level_1); + RUN_TEST(test_level_exp_warrior_level_1); + RUN_TEST(test_level_exp_invalid_level_returns_zero); + RUN_TEST(test_level_exp_immortal_level); + + return UNITY_END(); +} diff --git a/tests/test_interpreter b/tests/test_interpreter new file mode 100755 index 0000000000000000000000000000000000000000..8e31ac81e026b8e023d2ff8123a13b66aa5bc49e GIT binary patch literal 371576 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

X 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%0D>_3ZDQU49yG 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

Jy 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

QdR{;W!}@%whrT72Tjv3X)zi7>R)(y}|1K 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 literal 0 HcmV?d00001 diff --git a/tests/test_random.c b/tests/test_random.c new file mode 100644 index 0000000..dbcfd30 --- /dev/null +++ b/tests/test_random.c @@ -0,0 +1,156 @@ +/** + * @file test_random.c + * Unit tests for src/random.c and the random-number helpers in src/utils.c + * (rand_number, dice). + */ + +#include "unity.h" + +#include "conf.h" +#include "sysdep.h" +#include "structs.h" +#include "utils.h" + +extern FILE *logfile; + +void setUp(void) { logfile = stderr; } +void tearDown(void) { logfile = NULL; } + +/* ========================================================= + * circle_srandom / circle_random — deterministic sequence + * + * The Park-Miller generator with seed s produces: + * G(s) = (16807 * s) mod 2147483647 + * Precomputed for seed=1: + * call 1 → 16807 + * call 2 → 282475249 + * call 3 → 1622136673 + * ========================================================= */ + +void test_circle_random_deterministic_first(void) +{ + circle_srandom(1); + TEST_ASSERT_EQUAL_UINT32(16807UL, circle_random()); +} + +void test_circle_random_deterministic_second(void) +{ + circle_srandom(1); + circle_random(); /* discard first */ + TEST_ASSERT_EQUAL_UINT32(282475249UL, circle_random()); +} + +void test_circle_random_deterministic_third(void) +{ + circle_srandom(1); + circle_random(); + circle_random(); + TEST_ASSERT_EQUAL_UINT32(1622650073UL, circle_random()); +} + +void test_circle_random_same_seed_same_sequence(void) +{ + circle_srandom(42); + unsigned long a = circle_random(); + unsigned long b = circle_random(); + + circle_srandom(42); + TEST_ASSERT_EQUAL_UINT32(a, circle_random()); + TEST_ASSERT_EQUAL_UINT32(b, circle_random()); +} + +/* ========================================================= + * rand_number — result always in [from, to] + * ========================================================= */ + +void test_rand_number_in_range(void) +{ + int i; + circle_srandom(12345); + for (i = 0; i < 200; i++) { + int v = rand_number(1, 10); + TEST_ASSERT_GREATER_OR_EQUAL_INT(1, v); + TEST_ASSERT_LESS_OR_EQUAL_INT(10, v); + } +} + +void test_rand_number_same_low_high(void) +{ + int i; + circle_srandom(1); + for (i = 0; i < 50; i++) + TEST_ASSERT_EQUAL_INT(7, rand_number(7, 7)); +} + +void test_rand_number_inverted_args(void) +{ + /* rand_number logs SYSERR and swaps; result must still be in [1,10] */ + int i; + circle_srandom(1); + for (i = 0; i < 50; i++) { + int v = rand_number(10, 1); + TEST_ASSERT_GREATER_OR_EQUAL_INT(1, v); + TEST_ASSERT_LESS_OR_EQUAL_INT(10, v); + } +} + +/* ========================================================= + * dice — num dice each of size sides + * ========================================================= */ + +void test_dice_zero_dice(void) +{ + circle_srandom(1); + TEST_ASSERT_EQUAL_INT(0, dice(0, 6)); +} + +void test_dice_zero_sides(void) +{ + circle_srandom(1); + TEST_ASSERT_EQUAL_INT(0, dice(3, 0)); +} + +void test_dice_result_in_range(void) +{ + int i; + circle_srandom(99); + for (i = 0; i < 200; i++) { + int v = dice(2, 6); + TEST_ASSERT_GREATER_OR_EQUAL_INT(2, v); + TEST_ASSERT_LESS_OR_EQUAL_INT(12, v); + } +} + +void test_dice_one_die_one_side(void) +{ + circle_srandom(1); + TEST_ASSERT_EQUAL_INT(1, dice(1, 1)); +} + +/* ========================================================= + * main + * ========================================================= */ + +int main(void) +{ + UNITY_BEGIN(); + + /* circle_srandom / circle_random */ + RUN_TEST(test_circle_random_deterministic_first); + RUN_TEST(test_circle_random_deterministic_second); + RUN_TEST(test_circle_random_deterministic_third); + RUN_TEST(test_circle_random_same_seed_same_sequence); + + /* rand_number */ + RUN_TEST(test_rand_number_in_range); + RUN_TEST(test_rand_number_same_low_high); + RUN_TEST(test_rand_number_inverted_args); + + /* dice */ + RUN_TEST(test_dice_zero_dice); + RUN_TEST(test_dice_zero_sides); + RUN_TEST(test_dice_result_in_range); + RUN_TEST(test_dice_one_die_one_side); + + return UNITY_END(); +} diff --git a/tests/test_stubs.c b/tests/test_stubs.c new file mode 100644 index 0000000..88a56d3 --- /dev/null +++ b/tests/test_stubs.c @@ -0,0 +1,507 @@ +/** + * @file test_stubs.c + * Stub definitions used by unit-test binaries. + * + * Every function here is declared __attribute__((weak)) so that a real + * definition provided by a compiled source file (e.g. class.c providing + * parse_class(), interpreter.c providing is_abbrev()) automatically wins + * over the stub at link time. + * + * Global-variable stubs are plain definitions (zero-initialised by the + * C standard for translation-unit scope). They satisfy the extern + * declarations in mud headers without conflicting with any source file + * that is deliberately excluded from the test build. + */ + +#include "conf.h" +#include "sysdep.h" +#include "structs.h" +#include "utils.h" +#include "comm.h" +#include "db.h" +#include "handler.h" +#include "interpreter.h" +#include "class.h" +#include "dg_scripts.h" +#include "protocol.h" + +#include +#include +#include + +/* ========================================================= + * Global variable stubs + * ========================================================= */ + +/* comm.c */ +FILE *logfile = NULL; /* tests init to stderr in setUp */ +struct descriptor_data *descriptor_list = NULL; +int no_specials = 0; +int circle_restrict = 0; + +/* db.c */ +struct room_data *world = NULL; +room_rnum top_of_world = 0; +struct weather_data weather_info; /* zero-init */ +struct char_data *character_list = NULL; +struct index_data *mob_index = NULL; +struct index_data *obj_index = NULL; +mob_rnum top_of_mobt = 0; +obj_rnum top_of_objt = 0; +char *motd = NULL; +char *imotd = NULL; +char *GREETINGS = NULL; +char *background = NULL; +struct happyhour happy_data; /* zero-init */ +struct player_index_element *player_table = NULL; +struct player_special_data dummy_mob; /* zero-init */ +struct config_data config_info; /* zero-init */ +time_t motdmod = 0; +time_t newsmod = 0; + +/* interpreter needs some start-room vnum stubs */ +ush_int r_mortal_start_room = 0; +ush_int r_immort_start_room = 0; +ush_int r_frozen_start_room = 0; + +/* config.c */ +int selfdelete_fastwipe = 0; + +/* constants.c – only needed when class.c is NOT in the build */ +__attribute__((weak)) const struct con_app_type con_app[26]; +__attribute__((weak)) const struct wis_app_type wis_app[26]; + +/* class.c – only needed when class.c is NOT in the build */ +__attribute__((weak)) const char *class_menu = ""; +__attribute__((weak)) const char *pc_class_types[] = { "\n" }; + +/* ========================================================= + * Function stubs (all weak so the real implementation wins) + * ========================================================= */ + +/* ---------- comm.c ---------- */ +__attribute__((weak)) +size_t send_to_char(struct char_data *ch, const char *messg, ...) +{ (void)ch; (void)messg; return 0; } + +__attribute__((weak)) +char *act(const char *str, int hide_invisible, struct char_data *ch, + struct obj_data *obj, void *vict_obj, int type) +{ (void)str; (void)hide_invisible; (void)ch; + (void)obj; (void)vict_obj; (void)type; return NULL; } + +__attribute__((weak)) +void write_to_q(const char *txt, struct txt_q *queue, int aliased) +{ (void)txt; (void)queue; (void)aliased; } + +__attribute__((weak)) +size_t write_to_output(struct descriptor_data *d, const char *txt, ...) +{ (void)d; (void)txt; return 0; } + +__attribute__((weak)) +size_t vwrite_to_output(struct descriptor_data *d, const char *fmt, va_list args) +{ (void)d; (void)fmt; (void)args; return 0; } + +__attribute__((weak)) +void echo_off(struct descriptor_data *d) { (void)d; } + +__attribute__((weak)) +void echo_on(struct descriptor_data *d) { (void)d; } + +/* ---------- modify.c ---------- */ +__attribute__((weak)) +void page_string(struct descriptor_data *d, char *str, int keep_internal) +{ (void)d; (void)str; (void)keep_internal; } + +__attribute__((weak)) +void parse_tab(char *str) { (void)str; } + +/* ---------- handler.c ---------- */ +__attribute__((weak)) +bool affected_by_spell(struct char_data *ch, int spell) +{ (void)ch; (void)spell; return FALSE; } + +__attribute__((weak)) +void affect_from_char(struct char_data *ch, int type) +{ (void)ch; (void)type; } + +__attribute__((weak)) +void extract_char(struct char_data *ch) { (void)ch; } + +__attribute__((weak)) +void extract_char_final(struct char_data *ch) { (void)ch; } + +__attribute__((weak)) +void char_from_room(struct char_data *ch) { (void)ch; } + +__attribute__((weak)) +void char_to_room(struct char_data *ch, room_rnum room) +{ (void)ch; (void)room; } + +__attribute__((weak)) +void free_char(struct char_data *ch) { (void)ch; } + +/* ---------- interpreter.c ---------- */ +__attribute__((weak)) +int is_abbrev(const char *arg1, const char *arg2) +{ (void)arg1; (void)arg2; return 0; } + +__attribute__((weak)) +int parse_class(char arg) +{ (void)arg; return CLASS_UNDEFINED; } + +/* ---------- class.c ---------- */ +__attribute__((weak)) +void set_title(struct char_data *ch, char *title) { (void)ch; (void)title; } + +__attribute__((weak)) +void spell_level(int spell, int chclass, int level) +{ (void)spell; (void)chclass; (void)level; } + +/* ---------- players.c ---------- */ +__attribute__((weak)) +void save_char(struct char_data *ch) { (void)ch; } + +__attribute__((weak)) +int create_entry(char *name) { (void)name; return 0; } + +__attribute__((weak)) +int load_char(const char *name, struct char_data *ch) +{ (void)name; (void)ch; return -1; } + +__attribute__((weak)) +void save_player_index(void) {} + +__attribute__((weak)) +void remove_player(int pfilepos) { (void)pfilepos; } + +__attribute__((weak)) +long get_ptable_by_name(const char *name) { (void)name; return -1; } + +/* ---------- act.wizard.c ---------- */ +__attribute__((weak)) +void snoop_check(struct char_data *ch) { (void)ch; } + +__attribute__((weak)) +void add_llog_entry(struct char_data *ch, int type) { (void)ch; (void)type; } + +/* ---------- db.c ---------- */ +__attribute__((weak)) +room_rnum real_room(room_vnum vnum) { (void)vnum; return NOWHERE; } + +__attribute__((weak)) +void clear_char(struct char_data *ch) { (void)ch; if (ch) memset(ch, 0, sizeof(*ch)); } + +__attribute__((weak)) +void reset_char(struct char_data *ch) { (void)ch; } + +__attribute__((weak)) +void init_char(struct char_data *ch) { (void)ch; } + +__attribute__((weak)) +void new_mobile_data(struct char_data *ch) { (void)ch; } + +__attribute__((weak)) +void free_char_from_db(struct char_data *ch) { (void)ch; } + +__attribute__((weak)) +void Crash_crashsave(struct char_data *ch) { (void)ch; } + +__attribute__((weak)) +int Crash_load(struct char_data *ch) { (void)ch; return 0; } + +__attribute__((weak)) +int Crash_delete_file(char *name) { (void)name; return 0; } + +/* ---------- ban.c ---------- */ +__attribute__((weak)) +int isbanned(char *hostname) { (void)hostname; return 0; } + +__attribute__((weak)) +int valid_name(char *newname) { (void)newname; return 1; } + +/* ---------- mail.c ---------- */ +__attribute__((weak)) +int has_mail(long recipient) { (void)recipient; return 0; } + +/* ---------- improved-edit.c ---------- */ +__attribute__((weak)) +void send_editor_help(struct descriptor_data *d) { (void)d; } + +/* ---------- dg_scripts.c ---------- */ +__attribute__((weak)) +void add_to_lookup_table(long uid, void *c) { (void)uid; (void)c; } + +__attribute__((weak)) +void delete_variables(const char *charname) { (void)charname; } + +__attribute__((weak)) +void read_saved_vars(struct char_data *ch) { (void)ch; } + +/* ---------- dg_triggers.c ---------- */ +__attribute__((weak)) +int greet_mtrigger(struct char_data *actor, int dir) +{ (void)actor; (void)dir; return 1; } + +__attribute__((weak)) +void greet_memory_mtrigger(struct char_data *actor) { (void)actor; } + +__attribute__((weak)) +int login_wtrigger(struct room_data *room, struct char_data *actor) +{ (void)room; (void)actor; return 1; } + +__attribute__((weak)) +int command_mtrigger(struct char_data *actor, char *cmd, char *argument) +{ (void)actor; (void)cmd; (void)argument; return 0; } + +__attribute__((weak)) +int command_otrigger(struct char_data *actor, char *cmd, char *argument) +{ (void)actor; (void)cmd; (void)argument; return 0; } + +__attribute__((weak)) +int command_wtrigger(struct char_data *actor, char *cmd, char *argument) +{ (void)actor; (void)cmd; (void)argument; return 0; } + +/* ---------- act.informative.c ---------- */ +__attribute__((weak)) +void look_at_room(struct char_data *ch, int ignore_brief) +{ (void)ch; (void)ignore_brief; } + +/* ---------- protocol.c ---------- */ +__attribute__((weak)) +void MXPSendTag(descriptor_t *apDescriptor, const char *apTag) +{ (void)apDescriptor; (void)apTag; } + +__attribute__((weak)) +void AddRecentPlayer(char *charname, char *host, bool newplr, bool cpover) +{ (void)charname; (void)host; (void)newplr; (void)cpover; } + +/* ---------- OLC parse functions ---------- */ +__attribute__((weak)) +void aedit_parse(struct descriptor_data *d, char *arg) { (void)d; (void)arg; } +__attribute__((weak)) +void cedit_parse(struct descriptor_data *d, char *arg) { (void)d; (void)arg; } +__attribute__((weak)) +void hedit_parse(struct descriptor_data *d, char *arg) { (void)d; (void)arg; } +__attribute__((weak)) +void ibtedit_parse(struct descriptor_data *d, char *arg) { (void)d; (void)arg; } +__attribute__((weak)) +void medit_parse(struct descriptor_data *d, char *arg) { (void)d; (void)arg; } +__attribute__((weak)) +void msgedit_parse(struct descriptor_data *d, char *arg) { (void)d; (void)arg; } +__attribute__((weak)) +void oedit_parse(struct descriptor_data *d, char *arg) { (void)d; (void)arg; } +__attribute__((weak)) +void prefedit_parse(struct descriptor_data *d, char *arg) { (void)d; (void)arg; } +__attribute__((weak)) +void qedit_parse(struct descriptor_data *d, char *arg) { (void)d; (void)arg; } +__attribute__((weak)) +void redit_parse(struct descriptor_data *d, char *arg) { (void)d; (void)arg; } +__attribute__((weak)) +void sedit_parse(struct descriptor_data *d, char *arg) { (void)d; (void)arg; } +__attribute__((weak)) +void trigedit_parse(struct descriptor_data *d, char *arg) { (void)d; (void)arg; } +__attribute__((weak)) +void zedit_parse(struct descriptor_data *d, char *arg) { (void)d; (void)arg; } + +/* ---------- ACMD stubs for all do_* functions ---------- + * These are function-pointer entries in the cmd_info[] table in interpreter.c. + * The table is DATA (not called at test time), but the linker still requires + * every symbol to resolve. Weak stubs satisfy the linker; the real do_* + * implementations would override them if act*.c were compiled. */ + +#define STUB_ACMD(name) \ + __attribute__((weak)) ACMD(name) { (void)ch; (void)argument; (void)cmd; (void)subcmd; } + +STUB_ACMD(do_action) +STUB_ACMD(do_advance) +STUB_ACMD(do_areas) +STUB_ACMD(do_assist) +STUB_ACMD(do_astat) +STUB_ACMD(do_at) +STUB_ACMD(do_attach) +STUB_ACMD(do_backstab) +STUB_ACMD(do_ban) +STUB_ACMD(do_bandage) +STUB_ACMD(do_bash) +STUB_ACMD(do_cast) +STUB_ACMD(do_changelog) +STUB_ACMD(do_checkloadstatus) +STUB_ACMD(do_commands) +STUB_ACMD(do_consider) +STUB_ACMD(do_copyover) +STUB_ACMD(do_date) +STUB_ACMD(do_dc) +STUB_ACMD(do_detach) +STUB_ACMD(do_diagnose) +STUB_ACMD(do_dig) +STUB_ACMD(do_display) +STUB_ACMD(do_drink) +STUB_ACMD(do_drop) +STUB_ACMD(do_eat) +STUB_ACMD(do_echo) +STUB_ACMD(do_enter) +STUB_ACMD(do_equipment) +STUB_ACMD(do_examine) +STUB_ACMD(do_exits) +STUB_ACMD(do_export_zone) +STUB_ACMD(do_file) +STUB_ACMD(do_flee) +STUB_ACMD(do_follow) +STUB_ACMD(do_force) +STUB_ACMD(do_gecho) +STUB_ACMD(do_gen_comm) +STUB_ACMD(do_gen_door) +STUB_ACMD(do_gen_ps) +STUB_ACMD(do_gen_tog) +STUB_ACMD(do_get) +STUB_ACMD(do_give) +STUB_ACMD(do_gold) +STUB_ACMD(do_goto) +STUB_ACMD(do_grab) +STUB_ACMD(do_group) +STUB_ACMD(do_gsay) +STUB_ACMD(do_happyhour) +STUB_ACMD(do_hcontrol) +STUB_ACMD(do_help) +STUB_ACMD(do_helpcheck) +STUB_ACMD(do_hide) +STUB_ACMD(do_hindex) +STUB_ACMD(do_history) +STUB_ACMD(do_hit) +STUB_ACMD(do_house) +STUB_ACMD(do_ibt) +STUB_ACMD(do_inventory) +STUB_ACMD(do_invis) +STUB_ACMD(do_kick) +STUB_ACMD(do_kill) +STUB_ACMD(do_last) +STUB_ACMD(do_leave) +STUB_ACMD(do_levels) +STUB_ACMD(do_links) +STUB_ACMD(do_load) +STUB_ACMD(do_look) +STUB_ACMD(do_map) +STUB_ACMD(do_masound) +STUB_ACMD(do_mat) +STUB_ACMD(do_mdamage) +STUB_ACMD(do_mdoor) +STUB_ACMD(do_mecho) +STUB_ACMD(do_mechoaround) +STUB_ACMD(do_mfollow) +STUB_ACMD(do_mforce) +STUB_ACMD(do_mforget) +STUB_ACMD(do_mgoto) +STUB_ACMD(do_mhunt) +STUB_ACMD(do_mjunk) +STUB_ACMD(do_mkill) +STUB_ACMD(do_mload) +STUB_ACMD(do_mlog) +STUB_ACMD(do_move) +STUB_ACMD(do_mpurge) +STUB_ACMD(do_mrecho) +STUB_ACMD(do_mremember) +STUB_ACMD(do_msend) +STUB_ACMD(do_msgedit) +STUB_ACMD(do_mteleport) +STUB_ACMD(do_mtransform) +STUB_ACMD(do_mzoneecho) +STUB_ACMD(do_not_here) +STUB_ACMD(do_oasis_aedit) +STUB_ACMD(do_oasis_cedit) +STUB_ACMD(do_oasis_copy) +STUB_ACMD(do_oasis_hedit) +STUB_ACMD(do_oasis_list) +STUB_ACMD(do_oasis_medit) +STUB_ACMD(do_oasis_oedit) +STUB_ACMD(do_oasis_prefedit) +STUB_ACMD(do_oasis_qedit) +STUB_ACMD(do_oasis_redit) +STUB_ACMD(do_oasis_sedit) +STUB_ACMD(do_oasis_trigedit) +STUB_ACMD(do_oasis_zedit) +STUB_ACMD(do_order) +STUB_ACMD(do_oset) +STUB_ACMD(do_page) +STUB_ACMD(do_peace) +STUB_ACMD(do_plist) +STUB_ACMD(do_pour) +STUB_ACMD(do_practice) +STUB_ACMD(do_purge) +STUB_ACMD(do_put) +STUB_ACMD(do_qcomm) +STUB_ACMD(do_quest) +STUB_ACMD(do_quit) +STUB_ACMD(do_reboot) +STUB_ACMD(do_recent) +STUB_ACMD(do_remove) +STUB_ACMD(do_reply) +STUB_ACMD(do_report) +STUB_ACMD(do_rescue) +STUB_ACMD(do_rest) +STUB_ACMD(do_restore) +STUB_ACMD(do_return) +STUB_ACMD(do_sac) +STUB_ACMD(do_save) +STUB_ACMD(do_saveall) +STUB_ACMD(do_say) +STUB_ACMD(do_scan) +STUB_ACMD(do_score) +STUB_ACMD(do_send) +STUB_ACMD(do_set) +STUB_ACMD(do_show) +STUB_ACMD(do_show_save_list) +STUB_ACMD(do_shutdown) +STUB_ACMD(do_sit) +STUB_ACMD(do_skillset) +STUB_ACMD(do_sleep) +STUB_ACMD(do_sneak) +STUB_ACMD(do_snoop) +STUB_ACMD(do_spec_comm) +STUB_ACMD(do_split) +STUB_ACMD(do_stand) +/* do_start has a different prototype than ACMD — it's called directly */ +__attribute__((weak)) +void do_start(struct char_data *ch) { (void)ch; } + +STUB_ACMD(do_stat) +STUB_ACMD(do_steal) +STUB_ACMD(do_switch) +STUB_ACMD(do_tedit) +STUB_ACMD(do_teleport) +STUB_ACMD(do_tell) +STUB_ACMD(do_time) +STUB_ACMD(do_title) +STUB_ACMD(do_toggle) +STUB_ACMD(do_track) +STUB_ACMD(do_trans) +STUB_ACMD(do_tstat) +STUB_ACMD(do_unban) +STUB_ACMD(do_unfollow) +STUB_ACMD(do_use) +STUB_ACMD(do_users) +STUB_ACMD(do_vdelete) +STUB_ACMD(do_visible) +STUB_ACMD(do_vnum) +STUB_ACMD(do_vstat) +STUB_ACMD(do_wake) +STUB_ACMD(do_wear) +STUB_ACMD(do_weather) +STUB_ACMD(do_where) +STUB_ACMD(do_whirlwind) +STUB_ACMD(do_who) +STUB_ACMD(do_whois) +STUB_ACMD(do_wield) +STUB_ACMD(do_wizhelp) +STUB_ACMD(do_wizlock) +STUB_ACMD(do_wiznet) +STUB_ACMD(do_wizupdate) +STUB_ACMD(do_wizutil) +STUB_ACMD(do_write) +STUB_ACMD(do_zcheck) +STUB_ACMD(do_zlock) +STUB_ACMD(do_zpurge) +STUB_ACMD(do_zreset) +STUB_ACMD(do_zunlock) + +#undef STUB_ACMD diff --git a/tests/test_utils b/tests/test_utils new file mode 100755 index 0000000000000000000000000000000000000000..8abe0d406e55d9a073c4c53660495570e090fe14 GIT binary patch literal 268752 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 + TEST_ASSERT_EQUAL_INT(0, t->day); +} + +void test_real_time_passed_days(void) +{ + time_t base = 1000000; + struct time_info_data *t = real_time_passed(base + 2 * SECS_PER_REAL_DAY + SECS_PER_REAL_HOUR, base); + TEST_ASSERT_EQUAL_INT(1, t->hours); + TEST_ASSERT_EQUAL_INT(2, t->day); +} + +/* ========================================================= + * mud_time_passed + * ========================================================= */ + +void test_mud_time_passed_hours(void) +{ + time_t base = 1000000; + struct time_info_data *t = mud_time_passed(base + 2 * SECS_PER_MUD_HOUR, base); + TEST_ASSERT_EQUAL_INT(2, t->hours); + TEST_ASSERT_EQUAL_INT(0, t->day); + TEST_ASSERT_EQUAL_INT(0, t->month); + TEST_ASSERT_EQUAL_INT(0, t->year); +} + +void test_mud_time_passed_days(void) +{ + time_t base = 1000000; + struct time_info_data *t = mud_time_passed(base + SECS_PER_MUD_DAY, base); + TEST_ASSERT_EQUAL_INT(0, t->hours); + TEST_ASSERT_EQUAL_INT(1, t->day); + TEST_ASSERT_EQUAL_INT(0, t->month); + TEST_ASSERT_EQUAL_INT(0, t->year); +} + +void test_mud_time_passed_months(void) +{ + time_t base = 1000000; + struct time_info_data *t = mud_time_passed(base + SECS_PER_MUD_MONTH, base); + TEST_ASSERT_EQUAL_INT(0, t->hours); + TEST_ASSERT_EQUAL_INT(0, t->day); + TEST_ASSERT_EQUAL_INT(1, t->month); + TEST_ASSERT_EQUAL_INT(0, t->year); +} + +/* ========================================================= + * main + * ========================================================= */ + +int main(void) +{ + UNITY_BEGIN(); + + /* prune_crlf */ + RUN_TEST(test_prune_crlf_strips_crlf); + RUN_TEST(test_prune_crlf_strips_lf_only); + RUN_TEST(test_prune_crlf_no_op_on_clean); + RUN_TEST(test_prune_crlf_multiple_trailing); + + /* str_cmp */ + RUN_TEST(test_str_cmp_equal_strings); + RUN_TEST(test_str_cmp_case_insensitive); + RUN_TEST(test_str_cmp_ordering_less); + RUN_TEST(test_str_cmp_ordering_greater); + RUN_TEST(test_str_cmp_empty_equal); + + /* strn_cmp */ + RUN_TEST(test_strn_cmp_equal_prefix); + RUN_TEST(test_strn_cmp_differ_past_n); + RUN_TEST(test_strn_cmp_differ_within_n); + + /* sprintbit */ + RUN_TEST(test_sprintbit_no_bits_set); + RUN_TEST(test_sprintbit_single_bit); + RUN_TEST(test_sprintbit_multiple_bits); + RUN_TEST(test_sprintbit_undefined_bit); + + /* sprinttype */ + RUN_TEST(test_sprinttype_valid_index_zero); + RUN_TEST(test_sprinttype_valid_index_one); + RUN_TEST(test_sprinttype_out_of_range); + + /* levenshtein_distance */ + RUN_TEST(test_levenshtein_identical_strings); + RUN_TEST(test_levenshtein_empty_and_nonempty); + RUN_TEST(test_levenshtein_single_insertion); + RUN_TEST(test_levenshtein_single_deletion); + RUN_TEST(test_levenshtein_single_substitution); + RUN_TEST(test_levenshtein_both_empty); + + /* count_color_chars */ + RUN_TEST(test_count_color_chars_no_codes); + RUN_TEST(test_count_color_chars_empty); + RUN_TEST(test_count_color_chars_single_color_code); + RUN_TEST(test_count_color_chars_double_tab); + RUN_TEST(test_count_color_chars_mixed); + + /* count_non_protocol_chars */ + RUN_TEST(test_count_non_protocol_chars_plain); + RUN_TEST(test_count_non_protocol_chars_empty); + RUN_TEST(test_count_non_protocol_chars_newlines_skipped); + RUN_TEST(test_count_non_protocol_chars_bracket_tag); + + /* atoidx */ + RUN_TEST(test_atoidx_valid_number); + RUN_TEST(test_atoidx_zero); + RUN_TEST(test_atoidx_negative_returns_nowhere); + RUN_TEST(test_atoidx_overflow_returns_nowhere); + + /* right_trim_whitespace */ + RUN_TEST(test_right_trim_whitespace_trailing_spaces); + RUN_TEST(test_right_trim_whitespace_no_trailing); + RUN_TEST(test_right_trim_whitespace_all_whitespace); + RUN_TEST(test_right_trim_whitespace_empty); + + /* remove_from_string */ + RUN_TEST(test_remove_from_string_word_present); + RUN_TEST(test_remove_from_string_word_absent); + RUN_TEST(test_remove_from_string_word_at_start); + + /* real_time_passed */ + RUN_TEST(test_real_time_passed_hours); + RUN_TEST(test_real_time_passed_days); + + /* mud_time_passed */ + RUN_TEST(test_mud_time_passed_hours); + RUN_TEST(test_mud_time_passed_days); + RUN_TEST(test_mud_time_passed_months); + + return UNITY_END(); +} diff --git a/tests/vendor/unity/unity.c b/tests/vendor/unity/unity.c new file mode 100644 index 0000000..84d6729 --- /dev/null +++ b/tests/vendor/unity/unity.c @@ -0,0 +1,2637 @@ +/* ========================================================================= + Unity - A Test Framework for C + ThrowTheSwitch.org + Copyright (c) 2007-26 Mike Karlesky, Mark VanderVoord, & Greg Williams + SPDX-License-Identifier: MIT +========================================================================= */ + +#include "unity.h" + +#ifndef UNITY_PROGMEM +#define UNITY_PROGMEM +#endif + +/* If omitted from header, declare overrideable prototypes here so they're ready for use */ +#ifdef UNITY_OMIT_OUTPUT_CHAR_HEADER_DECLARATION +void UNITY_OUTPUT_CHAR(int); +#endif + +/* Helpful macros for us to use here in Assert functions */ +#define UNITY_FAIL_AND_BAIL do { Unity.CurrentTestFailed = 1; UNITY_OUTPUT_FLUSH(); TEST_ABORT(); } while (0) +#define UNITY_IGNORE_AND_BAIL do { Unity.CurrentTestIgnored = 1; UNITY_OUTPUT_FLUSH(); TEST_ABORT(); } while (0) +#define RETURN_IF_FAIL_OR_IGNORE do { if (Unity.CurrentTestFailed || Unity.CurrentTestIgnored) { TEST_ABORT(); } } while (0) + +struct UNITY_STORAGE_T Unity; + +#ifdef UNITY_OUTPUT_COLOR +const char UNITY_PROGMEM UnityStrOk[] = "\033[42mOK\033[0m"; +const char UNITY_PROGMEM UnityStrPass[] = "\033[42mPASS\033[0m"; +const char UNITY_PROGMEM UnityStrFail[] = "\033[41mFAIL\033[0m"; +const char UNITY_PROGMEM UnityStrIgnore[] = "\033[43mIGNORE\033[0m"; +#else +const char UNITY_PROGMEM UnityStrOk[] = "OK"; +const char UNITY_PROGMEM UnityStrPass[] = "PASS"; +const char UNITY_PROGMEM UnityStrFail[] = "FAIL"; +const char UNITY_PROGMEM UnityStrIgnore[] = "IGNORE"; +#endif +static const char UNITY_PROGMEM UnityStrNull[] = "NULL"; +static const char UNITY_PROGMEM UnityStrSpacer[] = UNITY_FAILURE_DETAIL_SEPARATOR; +static const char UNITY_PROGMEM UnityStrExpected[] = " Expected "; +static const char UNITY_PROGMEM UnityStrWas[] = " Was "; +static const char UNITY_PROGMEM UnityStrGt[] = " to be greater than "; +static const char UNITY_PROGMEM UnityStrLt[] = " to be less than "; +static const char UNITY_PROGMEM UnityStrOrEqual[] = "or equal to "; +static const char UNITY_PROGMEM UnityStrNotEqual[] = " to be not equal to "; +static const char UNITY_PROGMEM UnityStrElement[] = " Element "; +static const char UNITY_PROGMEM UnityStrByte[] = " Byte "; +static const char UNITY_PROGMEM UnityStrMemory[] = " Memory Mismatch."; +static const char UNITY_PROGMEM UnityStrDelta[] = " Values Not Within Delta "; +static const char UNITY_PROGMEM UnityStrPointless[] = " You Asked Me To Compare Nothing, Which Was Pointless."; +static const char UNITY_PROGMEM UnityStrNullPointerForExpected[] = " Expected pointer to be NULL"; +static const char UNITY_PROGMEM UnityStrNullPointerForActual[] = " Actual pointer was NULL"; +#ifndef UNITY_EXCLUDE_FLOAT +static const char UNITY_PROGMEM UnityStrNot[] = "Not "; +static const char UNITY_PROGMEM UnityStrInf[] = "Infinity"; +static const char UNITY_PROGMEM UnityStrNegInf[] = "Negative Infinity"; +static const char UNITY_PROGMEM UnityStrNaN[] = "NaN"; +static const char UNITY_PROGMEM UnityStrDet[] = "Determinate"; +static const char UNITY_PROGMEM UnityStrInvalidFloatTrait[] = "Invalid Float Trait"; +#endif +const char UNITY_PROGMEM UnityStrErrShorthand[] = "Unity Shorthand Support Disabled"; +const char UNITY_PROGMEM UnityStrErrFloat[] = "Unity Floating Point Disabled"; +const char UNITY_PROGMEM UnityStrErrDouble[] = "Unity Double Precision Disabled"; +const char UNITY_PROGMEM UnityStrErr64[] = "Unity 64-bit Support Disabled"; +const char UNITY_PROGMEM UnityStrErrDetailStack[] = "Unity Detail Stack Support Disabled"; +static const char UNITY_PROGMEM UnityStrBreaker[] = "-----------------------"; +static const char UNITY_PROGMEM UnityStrResultsTests[] = " Tests "; +static const char UNITY_PROGMEM UnityStrResultsFailures[] = " Failures "; +static const char UNITY_PROGMEM UnityStrResultsIgnored[] = " Ignored "; +#ifndef UNITY_EXCLUDE_DETAILS +#ifdef UNITY_DETAIL_STACK_SIZE +static const char* UNITY_PROGMEM UnityStrDetailLabels[] = UNITY_DETAIL_LABEL_NAMES; +static const UNITY_COUNTER_TYPE UNITY_PROGMEM UnityStrDetailLabelsCount = sizeof(UnityStrDetailLabels) / sizeof(const char*); +static const char UNITY_PROGMEM UnityStrErrDetailStackEmpty[] = " Detail Stack Empty"; +static const char UNITY_PROGMEM UnityStrErrDetailStackFull[] = " Detail Stack Full"; +static const char UNITY_PROGMEM UnityStrErrDetailStackLabel[] = " Detail Label Outside Of UNITY_DETAIL_LABEL_NAMES: "; +static const char UNITY_PROGMEM UnityStrErrDetailStackPop[] = " Detail Pop With Unexpected Arguments"; +#else +static const char UNITY_PROGMEM UnityStrDetail1Name[] = UNITY_DETAIL1_NAME " "; +static const char UNITY_PROGMEM UnityStrDetail2Name[] = " " UNITY_DETAIL2_NAME " "; +#endif +#endif +/*----------------------------------------------- + * Pretty Printers & Test Result Output Handlers + *-----------------------------------------------*/ + +/*-----------------------------------------------*/ +/* Local helper function to print characters. */ +static void UnityPrintChar(const char* pch) +{ + /* printable characters plus CR & LF are printed */ + if ((*pch <= 126) && (*pch >= 32)) + { + UNITY_OUTPUT_CHAR(*pch); + } + /* write escaped carriage returns */ + else if (*pch == 13) + { + UNITY_OUTPUT_CHAR('\\'); + UNITY_OUTPUT_CHAR('r'); + } + /* write escaped line feeds */ + else if (*pch == 10) + { + UNITY_OUTPUT_CHAR('\\'); + UNITY_OUTPUT_CHAR('n'); + } + /* unprintable characters are shown as codes */ + else + { + UNITY_OUTPUT_CHAR('\\'); + UNITY_OUTPUT_CHAR('x'); + UnityPrintNumberHex((UNITY_UINT)*pch, 2); + } +} + +/*-----------------------------------------------*/ +/* Local helper function to print ANSI escape strings e.g. "\033[42m". */ +#ifdef UNITY_OUTPUT_COLOR +static UNITY_UINT UnityPrintAnsiEscapeString(const char* string) +{ + const char* pch = string; + UNITY_UINT count = 0; + + while (*pch && (*pch != 'm')) + { + UNITY_OUTPUT_CHAR(*pch); + pch++; + count++; + } + UNITY_OUTPUT_CHAR('m'); + count++; + + return count; +} +#endif + +/*-----------------------------------------------*/ +void UnityPrint(const char* string) +{ + const char* pch = string; + + if (pch != NULL) + { + while (*pch) + { +#ifdef UNITY_OUTPUT_COLOR + /* print ANSI escape code */ + if ((*pch == 27) && (*(pch + 1) == '[')) + { + pch += UnityPrintAnsiEscapeString(pch); + continue; + } +#endif + UnityPrintChar(pch); + pch++; + } + } +} +/*-----------------------------------------------*/ +void UnityPrintLen(const char* string, const UNITY_UINT32 length) +{ + const char* pch = string; + + if (pch != NULL) + { + while (*pch && ((UNITY_UINT32)(pch - string) < length)) + { + /* printable characters plus CR & LF are printed */ + if ((*pch <= 126) && (*pch >= 32)) + { + UNITY_OUTPUT_CHAR(*pch); + } + /* write escaped carriage returns */ + else if (*pch == 13) + { + UNITY_OUTPUT_CHAR('\\'); + UNITY_OUTPUT_CHAR('r'); + } + /* write escaped line feeds */ + else if (*pch == 10) + { + UNITY_OUTPUT_CHAR('\\'); + UNITY_OUTPUT_CHAR('n'); + } + /* unprintable characters are shown as codes */ + else + { + UNITY_OUTPUT_CHAR('\\'); + UNITY_OUTPUT_CHAR('x'); + UnityPrintNumberHex((UNITY_UINT)*pch, 2); + } + pch++; + } + } +} + +/*-----------------------------------------------*/ +void UnityPrintIntNumberByStyle(const UNITY_INT number, const UNITY_DISPLAY_STYLE_T style) +{ + if (style == UNITY_DISPLAY_STYLE_CHAR) + { + /* printable characters plus CR & LF are printed */ + UNITY_OUTPUT_CHAR('\''); + if ((number <= 126) && (number >= 32)) + { + UNITY_OUTPUT_CHAR((int)number); + } + /* write escaped carriage returns */ + else if (number == 13) + { + UNITY_OUTPUT_CHAR('\\'); + UNITY_OUTPUT_CHAR('r'); + } + /* write escaped line feeds */ + else if (number == 10) + { + UNITY_OUTPUT_CHAR('\\'); + UNITY_OUTPUT_CHAR('n'); + } + /* unprintable characters are shown as codes */ + else + { + UNITY_OUTPUT_CHAR('\\'); + UNITY_OUTPUT_CHAR('x'); + UnityPrintNumberHex((UNITY_UINT)number, 2); + } + UNITY_OUTPUT_CHAR('\''); + } + else if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) + { + UnityPrintNumber(number); + } + else if ((style & UNITY_DISPLAY_RANGE_UINT) == UNITY_DISPLAY_RANGE_UINT) + { + UnityPrintNumberUnsigned((UNITY_UINT)number); + } + else + { + UNITY_OUTPUT_CHAR('0'); + UNITY_OUTPUT_CHAR('x'); + UnityPrintNumberHex((UNITY_UINT)number, (char)((style & 0xF) * 2)); + } +} + +void UnityPrintUintNumberByStyle(const UNITY_UINT number, const UNITY_DISPLAY_STYLE_T style) +{ + if ((style & UNITY_DISPLAY_RANGE_UINT) == UNITY_DISPLAY_RANGE_UINT) + { + UnityPrintNumberUnsigned(number); + } + else + { + UNITY_OUTPUT_CHAR('0'); + UNITY_OUTPUT_CHAR('x'); + UnityPrintNumberHex((UNITY_UINT)number, (char)((style & 0xF) * 2)); + } +} + +/*-----------------------------------------------*/ +void UnityPrintNumber(const UNITY_INT number_to_print) +{ + UNITY_UINT number = (UNITY_UINT)number_to_print; + + if (number_to_print < 0) + { + /* A negative number, including MIN negative */ + UNITY_OUTPUT_CHAR('-'); + number = (~number) + 1; + } + UnityPrintNumberUnsigned(number); +} + +/*----------------------------------------------- + * basically do an itoa using as little ram as possible */ +void UnityPrintNumberUnsigned(const UNITY_UINT number) +{ + UNITY_UINT divisor = 1; + + /* figure out initial divisor */ + while (number / divisor > 9) + { + divisor *= 10; + } + + /* now mod and print, then divide divisor */ + do + { + UNITY_OUTPUT_CHAR((char)('0' + (number / divisor % 10))); + divisor /= 10; + } while (divisor > 0); +} + +/*-----------------------------------------------*/ +void UnityPrintNumberHex(const UNITY_UINT number, const char nibbles_to_print) +{ + int nibble; + char nibbles = nibbles_to_print; + + if ((unsigned)nibbles > UNITY_MAX_NIBBLES) + { + nibbles = UNITY_MAX_NIBBLES; + } + + while (nibbles > 0) + { + nibbles--; + nibble = (int)(number >> (nibbles * 4)) & 0x0F; + if (nibble <= 9) + { + UNITY_OUTPUT_CHAR((char)('0' + nibble)); + } + else + { + UNITY_OUTPUT_CHAR((char)('A' - 10 + nibble)); + } + } +} + +/*-----------------------------------------------*/ +void UnityPrintMask(const UNITY_UINT mask, const UNITY_UINT number) +{ + UNITY_UINT current_bit = (UNITY_UINT)1 << (UNITY_INT_WIDTH - 1); + UNITY_INT32 i; + + for (i = 0; i < UNITY_INT_WIDTH; i++) + { + if (current_bit & mask) + { + if (current_bit & number) + { + UNITY_OUTPUT_CHAR('1'); + } + else + { + UNITY_OUTPUT_CHAR('0'); + } + } + else + { + UNITY_OUTPUT_CHAR('X'); + } + current_bit = current_bit >> 1; + } +} + +/*-----------------------------------------------*/ +#ifndef UNITY_EXCLUDE_FLOAT_PRINT +/* + * This function prints a floating-point value in a format similar to + * printf("%.7g") on a single-precision machine or printf("%.9g") on a + * double-precision machine. The 7th digit won't always be totally correct + * in single-precision operation (for that level of accuracy, a more + * complicated algorithm would be needed). + */ +void UnityPrintFloat(const UNITY_DOUBLE input_number) +{ +#ifdef UNITY_INCLUDE_DOUBLE + static const int sig_digits = 9; + static const UNITY_INT32 min_scaled = 100000000; + static const UNITY_INT32 max_scaled = 1000000000; +#else + static const int sig_digits = 7; + static const UNITY_INT32 min_scaled = 1000000; + static const UNITY_INT32 max_scaled = 10000000; +#endif + + UNITY_DOUBLE number = input_number; + + /* handle zero, NaN, and +/- infinity */ + if (number == 0.0f) + { + UnityPrint("0"); + } + else if (UNITY_IS_NAN(number)) + { + UnityPrint(UnityStrNaN); + } + else if (UNITY_IS_INF(number)) + { + if (number < 0.0f) + { + UnityPrint(UnityStrNegInf); + } + else + { + UnityPrint(UnityStrInf); + } + } + else + { + UNITY_INT32 n_int = 0; + UNITY_INT32 n; + int exponent = 0; + int decimals; + int digits; + char buf[16] = {0}; + + if (number < 0.0f) + { + UNITY_OUTPUT_CHAR('-'); + number = -number; + } + /* + * Scale up or down by powers of 10. To minimize rounding error, + * start with a factor/divisor of 10^10, which is the largest + * power of 10 that can be represented exactly. Finally, compute + * (exactly) the remaining power of 10 and perform one more + * multiplication or division. + */ + if (number < 1.0f) + { + UNITY_DOUBLE factor = 1.0f; + + while (number < (UNITY_DOUBLE)max_scaled / 1e10f) { number *= 1e10f; exponent -= 10; } + while (number * factor < (UNITY_DOUBLE)min_scaled) { factor *= 10.0f; exponent--; } + + number *= factor; + } + else if (number > (UNITY_DOUBLE)max_scaled) + { + UNITY_DOUBLE divisor = 1.0f; + + while (number > (UNITY_DOUBLE)min_scaled * 1e10f) { number /= 1e10f; exponent += 10; } + while (number / divisor > (UNITY_DOUBLE)max_scaled) { divisor *= 10.0f; exponent++; } + + number /= divisor; + } + else + { + /* + * In this range, we can split off the integer part before + * doing any multiplications. This reduces rounding error by + * freeing up significant bits in the fractional part. + */ + UNITY_DOUBLE factor = 1.0f; + n_int = (UNITY_INT32)number; + number -= (UNITY_DOUBLE)n_int; + + while (n_int < min_scaled) { n_int *= 10; factor *= 10.0f; exponent--; } + + number *= factor; + } + + /* round to nearest integer */ + n = ((UNITY_INT32)(number + number) + 1) / 2; + +#ifndef UNITY_ROUND_TIES_AWAY_FROM_ZERO + /* round to even if exactly between two integers */ + if ((n & 1) && (((UNITY_DOUBLE)n - number) == 0.5f)) + n--; +#endif + + n += n_int; + + if (n >= max_scaled) + { + n = min_scaled; + exponent++; + } + + /* determine where to place decimal point */ + decimals = ((exponent <= 0) && (exponent >= -(sig_digits + 3))) ? (-exponent) : (sig_digits - 1); + exponent += decimals; + + /* truncate trailing zeroes after decimal point */ + while ((decimals > 0) && ((n % 10) == 0)) + { + n /= 10; + decimals--; + } + + /* build up buffer in reverse order */ + digits = 0; + while ((n != 0) || (digits <= decimals)) + { + buf[digits++] = (char)('0' + n % 10); + n /= 10; + } + + /* print out buffer (backwards) */ + while (digits > 0) + { + if (digits == decimals) + { + UNITY_OUTPUT_CHAR('.'); + } + UNITY_OUTPUT_CHAR(buf[--digits]); + } + + /* print exponent if needed */ + if (exponent != 0) + { + UNITY_OUTPUT_CHAR('e'); + + if (exponent < 0) + { + UNITY_OUTPUT_CHAR('-'); + exponent = -exponent; + } + else + { + UNITY_OUTPUT_CHAR('+'); + } + + digits = 0; + while ((exponent != 0) || (digits < 2)) + { + buf[digits++] = (char)('0' + exponent % 10); + exponent /= 10; + } + while (digits > 0) + { + UNITY_OUTPUT_CHAR(buf[--digits]); + } + } + } +} +#endif /* ! UNITY_EXCLUDE_FLOAT_PRINT */ + +/*-----------------------------------------------*/ +static void UnityTestResultsBegin(const char* file, const UNITY_LINE_TYPE line) +{ +#ifdef UNITY_OUTPUT_FOR_ECLIPSE + UNITY_OUTPUT_CHAR('('); + UnityPrint(file); + UNITY_OUTPUT_CHAR(':'); + UnityPrintNumber((UNITY_INT)line); + UNITY_OUTPUT_CHAR(')'); + UNITY_OUTPUT_CHAR(' '); + UnityPrint(Unity.CurrentTestName); + UNITY_OUTPUT_CHAR(':'); +#else +#ifdef UNITY_OUTPUT_FOR_IAR_WORKBENCH + UnityPrint("'); + UnityPrint(Unity.CurrentTestName); + UnityPrint(" "); +#else +#ifdef UNITY_OUTPUT_FOR_QT_CREATOR + UnityPrint("file://"); + UnityPrint(file); + UNITY_OUTPUT_CHAR(':'); + UnityPrintNumber((UNITY_INT)line); + UNITY_OUTPUT_CHAR(' '); + UnityPrint(Unity.CurrentTestName); + UNITY_OUTPUT_CHAR(':'); +#else + UnityPrint(file); + UNITY_OUTPUT_CHAR(':'); + UnityPrintNumber((UNITY_INT)line); + UNITY_OUTPUT_CHAR(':'); + UnityPrint(Unity.CurrentTestName); + UNITY_OUTPUT_CHAR(':'); +#endif +#endif +#endif +} + +/*-----------------------------------------------*/ +static void UnityTestResultsFailBegin(const UNITY_LINE_TYPE line) +{ + UnityTestResultsBegin(Unity.TestFile, line); + UnityPrint(UnityStrFail); + UNITY_OUTPUT_CHAR(':'); +} + +/*-----------------------------------------------*/ +void UnityConcludeTest(void) +{ + if (Unity.CurrentTestIgnored) + { + Unity.TestIgnores++; + } + else if (!Unity.CurrentTestFailed) + { + UnityTestResultsBegin(Unity.TestFile, Unity.CurrentTestLineNumber); + UnityPrint(UnityStrPass); + } + else + { + Unity.TestFailures++; + } + + Unity.CurrentTestFailed = 0; + Unity.CurrentTestIgnored = 0; + UNITY_PRINT_EXEC_TIME(); + UNITY_PRINT_EOL(); + UNITY_FLUSH_CALL(); +} + +/*-----------------------------------------------*/ +static void UnityAddMsgIfSpecified(const char* msg) +{ +#ifdef UNITY_PRINT_TEST_CONTEXT + UnityPrint(UnityStrSpacer); + UNITY_PRINT_TEST_CONTEXT(); +#endif +#ifndef UNITY_EXCLUDE_DETAILS +#ifdef UNITY_DETAIL_STACK_SIZE + { + UNITY_COUNTER_TYPE c; + for (c = 0; (c < Unity.CurrentDetailStackSize) && (c < UNITY_DETAIL_STACK_SIZE); c++) { + const char* label; + if ((Unity.CurrentDetailStackLabels[c] == UNITY_DETAIL_NONE) || (Unity.CurrentDetailStackLabels[c] > UnityStrDetailLabelsCount)) { + break; + } + label = UnityStrDetailLabels[Unity.CurrentDetailStackLabels[c]]; + UnityPrint(UnityStrSpacer); + if ((label[0] == '#') && (label[1] != 0)) { + UnityPrint(label + 2); + UNITY_OUTPUT_CHAR(' '); + if ((label[1] & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) { + UnityPrintIntNumberByStyle((UNITY_INT)Unity.CurrentDetailStackValues[c], label[1]); + } else { + UnityPrintUintNumberByStyle((UNITY_UINT)Unity.CurrentDetailStackValues[c], label[1]); + } + } else if (Unity.CurrentDetailStackValues[c] != 0){ + UnityPrint(label); + UNITY_OUTPUT_CHAR(' '); + UnityPrint((const char*)Unity.CurrentDetailStackValues[c]); + } + } + } +#else + if (Unity.CurrentDetail1) + { + UnityPrint(UnityStrSpacer); + UnityPrint(UnityStrDetail1Name); + UnityPrint(Unity.CurrentDetail1); + if (Unity.CurrentDetail2) + { + UnityPrint(UnityStrDetail2Name); + UnityPrint(Unity.CurrentDetail2); + } + } +#endif +#endif + if (msg) + { + UnityPrint(UnityStrSpacer); + UnityPrint(msg); + } +} + +/*-----------------------------------------------*/ +static void UnityPrintExpectedAndActualStrings(const char* expected, const char* actual) +{ + UnityPrint(UnityStrExpected); + if (expected != NULL) + { + UNITY_OUTPUT_CHAR('\''); + UnityPrint(expected); + UNITY_OUTPUT_CHAR('\''); + } + else + { + UnityPrint(UnityStrNull); + } + UnityPrint(UnityStrWas); + if (actual != NULL) + { + UNITY_OUTPUT_CHAR('\''); + UnityPrint(actual); + UNITY_OUTPUT_CHAR('\''); + } + else + { + UnityPrint(UnityStrNull); + } +} + +/*-----------------------------------------------*/ +static void UnityPrintExpectedAndActualStringsLen(const char* expected, + const char* actual, + const UNITY_UINT32 length) +{ + UnityPrint(UnityStrExpected); + if (expected != NULL) + { + UNITY_OUTPUT_CHAR('\''); + UnityPrintLen(expected, length); + UNITY_OUTPUT_CHAR('\''); + } + else + { + UnityPrint(UnityStrNull); + } + UnityPrint(UnityStrWas); + if (actual != NULL) + { + UNITY_OUTPUT_CHAR('\''); + UnityPrintLen(actual, length); + UNITY_OUTPUT_CHAR('\''); + } + else + { + UnityPrint(UnityStrNull); + } +} + +/*----------------------------------------------- + * Assertion & Control Helpers + *-----------------------------------------------*/ + +/*-----------------------------------------------*/ +static int UnityIsOneArrayNull(UNITY_INTERNAL_PTR expected, + UNITY_INTERNAL_PTR actual, + const UNITY_LINE_TYPE lineNumber, + const char* msg) +{ + /* Both are NULL or same pointer */ + if (expected == actual) { return 0; } + + /* print and return true if just expected is NULL */ + if (expected == NULL) + { + UnityTestResultsFailBegin(lineNumber); + UnityPrint(UnityStrNullPointerForExpected); + UnityAddMsgIfSpecified(msg); + return 1; + } + + /* print and return true if just actual is NULL */ + if (actual == NULL) + { + UnityTestResultsFailBegin(lineNumber); + UnityPrint(UnityStrNullPointerForActual); + UnityAddMsgIfSpecified(msg); + return 1; + } + + return 0; /* return false if neither is NULL */ +} + +/*----------------------------------------------- + * Assertion Functions + *-----------------------------------------------*/ + +/*-----------------------------------------------*/ +void UnityAssertBits(const UNITY_INT mask, + const UNITY_INT expected, + const UNITY_INT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber) +{ + RETURN_IF_FAIL_OR_IGNORE; + + if ((mask & expected) != (mask & actual)) + { + UnityTestResultsFailBegin(lineNumber); + UnityPrint(UnityStrExpected); + UnityPrintMask((UNITY_UINT)mask, (UNITY_UINT)expected); + UnityPrint(UnityStrWas); + UnityPrintMask((UNITY_UINT)mask, (UNITY_UINT)actual); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } +} + +/*-----------------------------------------------*/ +void UnityAssertEqualIntNumber(const UNITY_INT expected, + const UNITY_INT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style) +{ + RETURN_IF_FAIL_OR_IGNORE; + + if (expected != actual) + { + UnityTestResultsFailBegin(lineNumber); + UnityPrint(UnityStrExpected); + UnityPrintIntNumberByStyle(expected, style); + UnityPrint(UnityStrWas); + UnityPrintIntNumberByStyle(actual, style); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } +} + +void UnityAssertEqualUintNumber(const UNITY_UINT expected, + const UNITY_UINT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style) +{ + RETURN_IF_FAIL_OR_IGNORE; + + if (expected != actual) + { + UnityTestResultsFailBegin(lineNumber); + UnityPrint(UnityStrExpected); + UnityPrintUintNumberByStyle(expected, style); + UnityPrint(UnityStrWas); + UnityPrintUintNumberByStyle(actual, style); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } +} +/*-----------------------------------------------*/ +void UnityAssertIntGreaterOrLessOrEqualNumber(const UNITY_INT threshold, + const UNITY_INT actual, + const UNITY_COMPARISON_T compare, + const char *msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style) +{ + int failed = 0; + RETURN_IF_FAIL_OR_IGNORE; + + if ((threshold == actual) && !(compare & UNITY_EQUAL_TO)) { failed = 1; } + + if ((actual > threshold) && (compare & UNITY_SMALLER_THAN)) { failed = 1; } + if ((actual < threshold) && (compare & UNITY_GREATER_THAN)) { failed = 1; } + + if (failed) + { + UnityTestResultsFailBegin(lineNumber); + UnityPrint(UnityStrExpected); + UnityPrintIntNumberByStyle(actual, style); + if (compare & UNITY_GREATER_THAN) { UnityPrint(UnityStrGt); } + if (compare & UNITY_SMALLER_THAN) { UnityPrint(UnityStrLt); } + if (compare & UNITY_EQUAL_TO) { UnityPrint(UnityStrOrEqual); } + if (compare == UNITY_NOT_EQUAL) { UnityPrint(UnityStrNotEqual); } + UnityPrintIntNumberByStyle(threshold, style); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } +} + +void UnityAssertUintGreaterOrLessOrEqualNumber(const UNITY_UINT threshold, + const UNITY_UINT actual, + const UNITY_COMPARISON_T compare, + const char *msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style) +{ + int failed = 0; + RETURN_IF_FAIL_OR_IGNORE; + + if ((threshold == actual) && !(compare & UNITY_EQUAL_TO)) { failed = 1; } + + /* UINT or HEX */ + if ((actual > threshold) && (compare & UNITY_SMALLER_THAN)) { failed = 1; } + if ((actual < threshold) && (compare & UNITY_GREATER_THAN)) { failed = 1; } + + if (failed) + { + UnityTestResultsFailBegin(lineNumber); + UnityPrint(UnityStrExpected); + UnityPrintUintNumberByStyle(actual, style); + if (compare & UNITY_GREATER_THAN) { UnityPrint(UnityStrGt); } + if (compare & UNITY_SMALLER_THAN) { UnityPrint(UnityStrLt); } + if (compare & UNITY_EQUAL_TO) { UnityPrint(UnityStrOrEqual); } + if (compare == UNITY_NOT_EQUAL) { UnityPrint(UnityStrNotEqual); } + UnityPrintUintNumberByStyle(threshold, style); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } +} + +#define UnityPrintPointlessAndBail() \ +do { \ + UnityTestResultsFailBegin(lineNumber); \ + UnityPrint(UnityStrPointless); \ + UnityAddMsgIfSpecified(msg); \ + UNITY_FAIL_AND_BAIL; \ +} while (0) + +/*-----------------------------------------------*/ +void UnityAssertEqualIntArray(UNITY_INTERNAL_PTR expected, + UNITY_INTERNAL_PTR actual, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style, + const UNITY_FLAGS_T flags) +{ + UNITY_INT expect_val = 0; + UNITY_INT actual_val = 0; + UNITY_UINT32 elements = num_elements; + unsigned int length = style & 0xF; + unsigned int increment = 0; + + RETURN_IF_FAIL_OR_IGNORE; + + if (num_elements == 0) + { +#ifdef UNITY_COMPARE_PTRS_ON_ZERO_ARRAY + UNITY_TEST_ASSERT_EQUAL_PTR(expected, actual, lineNumber, msg); +#else + UnityPrintPointlessAndBail(); +#endif + } + + if (expected == actual) + { + return; /* Both are NULL or same pointer */ + } + + if (UnityIsOneArrayNull(expected, actual, lineNumber, msg)) + { + UNITY_FAIL_AND_BAIL; + } + + while ((elements > 0) && (elements--)) + { + switch (length) + { + case 1: + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)actual; + if (style & (UNITY_DISPLAY_RANGE_UINT | UNITY_DISPLAY_RANGE_HEX)) + { + expect_val &= 0x000000FF; + actual_val &= 0x000000FF; + } + increment = sizeof(UNITY_INT8); + break; + + case 2: + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)actual; + if (style & (UNITY_DISPLAY_RANGE_UINT | UNITY_DISPLAY_RANGE_HEX)) + { + expect_val &= 0x0000FFFF; + actual_val &= 0x0000FFFF; + } + increment = sizeof(UNITY_INT16); + break; + +#ifdef UNITY_SUPPORT_64 + case 8: + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)actual; + increment = sizeof(UNITY_INT64); + break; +#endif + + default: /* default is length 4 bytes */ + case 4: + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)actual; +#ifdef UNITY_SUPPORT_64 + if (style & (UNITY_DISPLAY_RANGE_UINT | UNITY_DISPLAY_RANGE_HEX)) + { + expect_val &= 0x00000000FFFFFFFF; + actual_val &= 0x00000000FFFFFFFF; + } +#endif + increment = sizeof(UNITY_INT32); + length = 4; + break; + } + + if (expect_val != actual_val) + { + if ((style & UNITY_DISPLAY_RANGE_UINT) && (length < (UNITY_INT_WIDTH / 8))) + { /* For UINT, remove sign extension (padding 1's) from signed type casts above */ + UNITY_INT mask = 1; + mask = (mask << 8 * length) - 1; + expect_val &= mask; + actual_val &= mask; + } + UnityTestResultsFailBegin(lineNumber); + UnityPrint(UnityStrElement); + UnityPrintNumberUnsigned(num_elements - elements - 1); + UnityPrint(UnityStrExpected); + UnityPrintIntNumberByStyle(expect_val, style); + UnityPrint(UnityStrWas); + UnityPrintIntNumberByStyle(actual_val, style); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } + /* Walk through array by incrementing the pointers */ + if (flags == UNITY_ARRAY_TO_ARRAY) + { + expected = (UNITY_INTERNAL_PTR)((const char*)expected + increment); + } + actual = (UNITY_INTERNAL_PTR)((const char*)actual + increment); + } +} + +/*-----------------------------------------------*/ +#ifndef UNITY_EXCLUDE_FLOAT +/* Wrap this define in a function with variable types as float or double */ +#define UNITY_FLOAT_OR_DOUBLE_WITHIN(delta, expected, actual, diff) \ + if (UNITY_IS_INF(expected) && UNITY_IS_INF(actual) && (((expected) < 0) == ((actual) < 0))) return 1; \ + if (UNITY_NAN_CHECK) return 1; \ + (diff) = (actual) - (expected); \ + if ((diff) < 0) (diff) = -(diff); \ + if ((delta) < 0) (delta) = -(delta); \ + return !(UNITY_IS_NAN(diff) || UNITY_IS_INF(diff) || ((diff) > (delta))) + /* This first part of this condition will catch any NaN or Infinite values */ +#ifndef UNITY_NAN_NOT_EQUAL_NAN + #define UNITY_NAN_CHECK UNITY_IS_NAN(expected) && UNITY_IS_NAN(actual) +#else + #define UNITY_NAN_CHECK 0 +#endif + +#ifndef UNITY_EXCLUDE_FLOAT_PRINT + #define UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT(expected, actual) \ + do { \ + UnityPrint(UnityStrExpected); \ + UnityPrintFloat(expected); \ + UnityPrint(UnityStrWas); \ + UnityPrintFloat(actual); \ + } while (0) +#else + #define UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT(expected, actual) \ + UnityPrint(UnityStrDelta) +#endif /* UNITY_EXCLUDE_FLOAT_PRINT */ + +/*-----------------------------------------------*/ +static int UnityFloatsWithin(UNITY_FLOAT delta, UNITY_FLOAT expected, UNITY_FLOAT actual) +{ + UNITY_FLOAT diff; + UNITY_FLOAT_OR_DOUBLE_WITHIN(delta, expected, actual, diff); +} + +/*-----------------------------------------------*/ +void UnityAssertWithinFloatArray(const UNITY_FLOAT delta, + UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* expected, + UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* actual, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLAGS_T flags) +{ + UNITY_UINT32 elements = num_elements; + UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* ptr_expected = expected; + UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* ptr_actual = actual; + UNITY_FLOAT in_delta = delta; + UNITY_FLOAT current_element_delta = delta; + + RETURN_IF_FAIL_OR_IGNORE; + + if (elements == 0) + { +#ifdef UNITY_COMPARE_PTRS_ON_ZERO_ARRAY + UNITY_TEST_ASSERT_EQUAL_PTR(expected, actual, lineNumber, msg); +#else + UnityPrintPointlessAndBail(); +#endif + } + + if (UNITY_IS_INF(in_delta)) + { + return; /* Arrays will be force equal with infinite delta */ + } + + if (UNITY_IS_NAN(in_delta)) + { + /* Delta must be correct number */ + UnityPrintPointlessAndBail(); + } + + if (expected == actual) + { + return; /* Both are NULL or same pointer */ + } + + if (UnityIsOneArrayNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg)) + { + UNITY_FAIL_AND_BAIL; + } + + /* fix delta sign if need */ + if (in_delta < 0) + { + in_delta = -in_delta; + } + + while (elements--) + { + current_element_delta = *ptr_expected * UNITY_FLOAT_PRECISION; + + if (current_element_delta < 0) + { + /* fix delta sign for correct calculations */ + current_element_delta = -current_element_delta; + } + + if (!UnityFloatsWithin(in_delta + current_element_delta, *ptr_expected, *ptr_actual)) + { + UnityTestResultsFailBegin(lineNumber); + UnityPrint(UnityStrElement); + UnityPrintNumberUnsigned(num_elements - elements - 1); + UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT((UNITY_DOUBLE)*ptr_expected, (UNITY_DOUBLE)*ptr_actual); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } + if (flags == UNITY_ARRAY_TO_ARRAY) + { + ptr_expected++; + } + ptr_actual++; + } +} + +/*-----------------------------------------------*/ +void UnityAssertFloatsWithin(const UNITY_FLOAT delta, + const UNITY_FLOAT expected, + const UNITY_FLOAT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber) +{ + RETURN_IF_FAIL_OR_IGNORE; + + + if (!UnityFloatsWithin(delta, expected, actual)) + { + UnityTestResultsFailBegin(lineNumber); + UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT((UNITY_DOUBLE)expected, (UNITY_DOUBLE)actual); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } +} + +#ifndef UNITY_EXCLUDE_FLOAT_PRINT +/*-----------------------------------------------*/ +void UnityAssertFloatsNotWithin(const UNITY_FLOAT delta, + const UNITY_FLOAT expected, + const UNITY_FLOAT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber) +{ + RETURN_IF_FAIL_OR_IGNORE; + + if (UnityFloatsWithin(delta, expected, actual)) + { + UnityTestResultsFailBegin(lineNumber); + UnityPrint(UnityStrExpected); + UnityPrintFloat((UNITY_DOUBLE)expected); + UnityPrint(UnityStrNotEqual); + UnityPrintFloat((UNITY_DOUBLE)actual); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } +} + +/*-----------------------------------------------*/ +void UnityAssertGreaterOrLessFloat(const UNITY_FLOAT threshold, + const UNITY_FLOAT actual, + const UNITY_COMPARISON_T compare, + const char* msg, + const UNITY_LINE_TYPE lineNumber) +{ + int failed; + + RETURN_IF_FAIL_OR_IGNORE; + + failed = 0; + + /* Checking for "not success" rather than failure to get the right result for NaN */ + if (!(actual < threshold) && (compare & UNITY_SMALLER_THAN)) { failed = 1; } + if (!(actual > threshold) && (compare & UNITY_GREATER_THAN)) { failed = 1; } + + if ((compare & UNITY_EQUAL_TO) && UnityFloatsWithin(threshold * UNITY_FLOAT_PRECISION, threshold, actual)) { failed = 0; } + + if (failed) + { + UnityTestResultsFailBegin(lineNumber); + UnityPrint(UnityStrExpected); + UnityPrintFloat(actual); + if (compare & UNITY_GREATER_THAN) { UnityPrint(UnityStrGt); } + if (compare & UNITY_SMALLER_THAN) { UnityPrint(UnityStrLt); } + if (compare & UNITY_EQUAL_TO) { UnityPrint(UnityStrOrEqual); } + UnityPrintFloat(threshold); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } +} +#endif /* ! UNITY_EXCLUDE_FLOAT_PRINT */ + +/*-----------------------------------------------*/ +void UnityAssertFloatSpecial(const UNITY_FLOAT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLOAT_TRAIT_T style) +{ + const char* trait_names[] = {UnityStrInf, UnityStrNegInf, UnityStrNaN, UnityStrDet}; + UNITY_INT should_be_trait = ((UNITY_INT)style & 1); + UNITY_INT is_trait = !should_be_trait; + UNITY_INT trait_index = (UNITY_INT)(style >> 1); + + RETURN_IF_FAIL_OR_IGNORE; + + switch (style) + { + case UNITY_FLOAT_IS_INF: + case UNITY_FLOAT_IS_NOT_INF: + is_trait = UNITY_IS_INF(actual) && (actual > 0); + break; + case UNITY_FLOAT_IS_NEG_INF: + case UNITY_FLOAT_IS_NOT_NEG_INF: + is_trait = UNITY_IS_INF(actual) && (actual < 0); + break; + + case UNITY_FLOAT_IS_NAN: + case UNITY_FLOAT_IS_NOT_NAN: + is_trait = UNITY_IS_NAN(actual) ? 1 : 0; + break; + + case UNITY_FLOAT_IS_DET: /* A determinate number is non infinite and not NaN. */ + case UNITY_FLOAT_IS_NOT_DET: + is_trait = !UNITY_IS_INF(actual) && !UNITY_IS_NAN(actual); + break; + + case UNITY_FLOAT_INVALID_TRAIT: /* Supress warning */ + default: /* including UNITY_FLOAT_INVALID_TRAIT */ + trait_index = 0; + trait_names[0] = UnityStrInvalidFloatTrait; + break; + } + + if (is_trait != should_be_trait) + { + UnityTestResultsFailBegin(lineNumber); + UnityPrint(UnityStrExpected); + if (!should_be_trait) + { + UnityPrint(UnityStrNot); + } + UnityPrint(trait_names[trait_index]); + UnityPrint(UnityStrWas); +#ifndef UNITY_EXCLUDE_FLOAT_PRINT + UnityPrintFloat((UNITY_DOUBLE)actual); +#else + if (should_be_trait) + { + UnityPrint(UnityStrNot); + } + UnityPrint(trait_names[trait_index]); +#endif + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } +} + +#endif /* not UNITY_EXCLUDE_FLOAT */ + +/*-----------------------------------------------*/ +#ifndef UNITY_EXCLUDE_DOUBLE +static int UnityDoublesWithin(UNITY_DOUBLE delta, UNITY_DOUBLE expected, UNITY_DOUBLE actual) +{ + UNITY_DOUBLE diff; + UNITY_FLOAT_OR_DOUBLE_WITHIN(delta, expected, actual, diff); +} + +/*-----------------------------------------------*/ +void UnityAssertWithinDoubleArray(const UNITY_DOUBLE delta, + UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* expected, + UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* actual, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLAGS_T flags) +{ + UNITY_UINT32 elements = num_elements; + UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* ptr_expected = expected; + UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* ptr_actual = actual; + UNITY_DOUBLE in_delta = delta; + UNITY_DOUBLE current_element_delta = delta; + + RETURN_IF_FAIL_OR_IGNORE; + + if (elements == 0) + { +#ifdef UNITY_COMPARE_PTRS_ON_ZERO_ARRAY + UNITY_TEST_ASSERT_EQUAL_PTR(expected, actual, lineNumber, msg); +#else + UnityPrintPointlessAndBail(); +#endif + } + + if (UNITY_IS_INF(in_delta)) + { + return; /* Arrays will be force equal with infinite delta */ + } + + if (UNITY_IS_NAN(in_delta)) + { + /* Delta must be correct number */ + UnityPrintPointlessAndBail(); + } + + if (expected == actual) + { + return; /* Both are NULL or same pointer */ + } + + if (UnityIsOneArrayNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg)) + { + UNITY_FAIL_AND_BAIL; + } + + /* fix delta sign if need */ + if (in_delta < 0) + { + in_delta = -in_delta; + } + + while (elements--) + { + current_element_delta = *ptr_expected * UNITY_DOUBLE_PRECISION; + + if (current_element_delta < 0) + { + /* fix delta sign for correct calculations */ + current_element_delta = -current_element_delta; + } + + if (!UnityDoublesWithin(in_delta + current_element_delta, *ptr_expected, *ptr_actual)) + { + UnityTestResultsFailBegin(lineNumber); + UnityPrint(UnityStrElement); + UnityPrintNumberUnsigned(num_elements - elements - 1); + UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT(*ptr_expected, *ptr_actual); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } + if (flags == UNITY_ARRAY_TO_ARRAY) + { + ptr_expected++; + } + ptr_actual++; + } +} + +/*-----------------------------------------------*/ +void UnityAssertDoublesWithin(const UNITY_DOUBLE delta, + const UNITY_DOUBLE expected, + const UNITY_DOUBLE actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber) +{ + RETURN_IF_FAIL_OR_IGNORE; + + if (!UnityDoublesWithin(delta, expected, actual)) + { + UnityTestResultsFailBegin(lineNumber); + UNITY_PRINT_EXPECTED_AND_ACTUAL_FLOAT(expected, actual); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } +} + +#ifndef UNITY_EXCLUDE_FLOAT_PRINT +/*-----------------------------------------------*/ +void UnityAssertDoublesNotWithin(const UNITY_DOUBLE delta, + const UNITY_DOUBLE expected, + const UNITY_DOUBLE actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber) +{ + RETURN_IF_FAIL_OR_IGNORE; + + if (UnityDoublesWithin(delta, expected, actual)) + { + UnityTestResultsFailBegin(lineNumber); + UnityPrint(UnityStrExpected); + UnityPrintFloat((UNITY_DOUBLE)expected); + UnityPrint(UnityStrNotEqual); + UnityPrintFloat((UNITY_DOUBLE)actual); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } +} + +/*-----------------------------------------------*/ +void UnityAssertGreaterOrLessDouble(const UNITY_DOUBLE threshold, + const UNITY_DOUBLE actual, + const UNITY_COMPARISON_T compare, + const char* msg, + const UNITY_LINE_TYPE lineNumber) +{ + int failed; + + RETURN_IF_FAIL_OR_IGNORE; + + failed = 0; + + /* Checking for "not success" rather than failure to get the right result for NaN */ + if (!(actual < threshold) && (compare & UNITY_SMALLER_THAN)) { failed = 1; } + if (!(actual > threshold) && (compare & UNITY_GREATER_THAN)) { failed = 1; } + + if ((compare & UNITY_EQUAL_TO) && UnityDoublesWithin(threshold * UNITY_DOUBLE_PRECISION, threshold, actual)) { failed = 0; } + + if (failed) + { + UnityTestResultsFailBegin(lineNumber); + UnityPrint(UnityStrExpected); + UnityPrintFloat(actual); + if (compare & UNITY_GREATER_THAN) { UnityPrint(UnityStrGt); } + if (compare & UNITY_SMALLER_THAN) { UnityPrint(UnityStrLt); } + if (compare & UNITY_EQUAL_TO) { UnityPrint(UnityStrOrEqual); } + UnityPrintFloat(threshold); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } +} +#endif /* ! UNITY_EXCLUDE_FLOAT_PRINT */ + +/*-----------------------------------------------*/ +void UnityAssertDoubleSpecial(const UNITY_DOUBLE actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLOAT_TRAIT_T style) +{ + const char* trait_names[] = {UnityStrInf, UnityStrNegInf, UnityStrNaN, UnityStrDet}; + UNITY_INT should_be_trait = ((UNITY_INT)style & 1); + UNITY_INT is_trait = !should_be_trait; + UNITY_INT trait_index = (UNITY_INT)(style >> 1); + + RETURN_IF_FAIL_OR_IGNORE; + + switch (style) + { + case UNITY_FLOAT_IS_INF: + case UNITY_FLOAT_IS_NOT_INF: + is_trait = UNITY_IS_INF(actual) && (actual > 0); + break; + case UNITY_FLOAT_IS_NEG_INF: + case UNITY_FLOAT_IS_NOT_NEG_INF: + is_trait = UNITY_IS_INF(actual) && (actual < 0); + break; + + case UNITY_FLOAT_IS_NAN: + case UNITY_FLOAT_IS_NOT_NAN: + is_trait = UNITY_IS_NAN(actual) ? 1 : 0; + break; + + case UNITY_FLOAT_IS_DET: /* A determinate number is non infinite and not NaN. */ + case UNITY_FLOAT_IS_NOT_DET: + is_trait = !UNITY_IS_INF(actual) && !UNITY_IS_NAN(actual); + break; + + case UNITY_FLOAT_INVALID_TRAIT: /* Supress warning */ + default: /* including UNITY_FLOAT_INVALID_TRAIT */ + trait_index = 0; + trait_names[0] = UnityStrInvalidFloatTrait; + break; + } + + if (is_trait != should_be_trait) + { + UnityTestResultsFailBegin(lineNumber); + UnityPrint(UnityStrExpected); + if (!should_be_trait) + { + UnityPrint(UnityStrNot); + } + UnityPrint(trait_names[trait_index]); + UnityPrint(UnityStrWas); +#ifndef UNITY_EXCLUDE_FLOAT_PRINT + UnityPrintFloat(actual); +#else + if (should_be_trait) + { + UnityPrint(UnityStrNot); + } + UnityPrint(trait_names[trait_index]); +#endif + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } +} + +#endif /* not UNITY_EXCLUDE_DOUBLE */ + +/*-----------------------------------------------*/ +void UnityAssertIntNumbersWithin(const UNITY_UINT delta, + const UNITY_INT expected, + const UNITY_INT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style) +{ + RETURN_IF_FAIL_OR_IGNORE; + + if (actual > expected) + { + Unity.CurrentTestFailed = (((UNITY_UINT)actual - (UNITY_UINT)expected) > delta); + } + else + { + Unity.CurrentTestFailed = (((UNITY_UINT)expected - (UNITY_UINT)actual) > delta); + } + + if (Unity.CurrentTestFailed) + { + UnityTestResultsFailBegin(lineNumber); + UnityPrint(UnityStrDelta); + UnityPrintIntNumberByStyle((UNITY_INT)delta, style); + UnityPrint(UnityStrExpected); + UnityPrintIntNumberByStyle(expected, style); + UnityPrint(UnityStrWas); + UnityPrintIntNumberByStyle(actual, style); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } +} + +void UnityAssertUintNumbersWithin(const UNITY_UINT delta, + const UNITY_UINT expected, + const UNITY_UINT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style) +{ + RETURN_IF_FAIL_OR_IGNORE; + + if (actual > expected) + { + Unity.CurrentTestFailed = ((actual - expected) > delta); + } + else + { + Unity.CurrentTestFailed = ((expected - actual) > delta); + } + + if (Unity.CurrentTestFailed) + { + UnityTestResultsFailBegin(lineNumber); + UnityPrint(UnityStrDelta); + UnityPrintUintNumberByStyle(delta, style); + UnityPrint(UnityStrExpected); + UnityPrintUintNumberByStyle(expected, style); + UnityPrint(UnityStrWas); + UnityPrintUintNumberByStyle(actual, style); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } +} + +/*-----------------------------------------------*/ +void UnityAssertNumbersArrayWithin(const UNITY_UINT delta, + UNITY_INTERNAL_PTR expected, + UNITY_INTERNAL_PTR actual, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style, + const UNITY_FLAGS_T flags) +{ + UNITY_UINT32 elements = num_elements; + unsigned int length = style & 0xF; + unsigned int increment = 0; + + RETURN_IF_FAIL_OR_IGNORE; + + if (num_elements == 0) + { +#ifdef UNITY_COMPARE_PTRS_ON_ZERO_ARRAY + UNITY_TEST_ASSERT_EQUAL_PTR(expected, actual, lineNumber, msg); +#else + UnityPrintPointlessAndBail(); +#endif + } + + if (expected == actual) + { + return; /* Both are NULL or same pointer */ + } + + if (UnityIsOneArrayNull(expected, actual, lineNumber, msg)) + { + UNITY_FAIL_AND_BAIL; + } + + while ((elements > 0) && (elements--)) + { + UNITY_INT expect_val; + UNITY_INT actual_val; + + switch (length) + { + case 1: + /* fixing problems with signed overflow on unsigned numbers */ + if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) + { + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT8*)actual; + increment = sizeof(UNITY_INT8); + } + else + { + expect_val = (UNITY_INT)*(UNITY_PTR_ATTRIBUTE const UNITY_UINT8*)expected; + actual_val = (UNITY_INT)*(UNITY_PTR_ATTRIBUTE const UNITY_UINT8*)actual; + increment = sizeof(UNITY_UINT8); + } + break; + + case 2: + /* fixing problems with signed overflow on unsigned numbers */ + if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) + { + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT16*)actual; + increment = sizeof(UNITY_INT16); + } + else + { + expect_val = (UNITY_INT)*(UNITY_PTR_ATTRIBUTE const UNITY_UINT16*)expected; + actual_val = (UNITY_INT)*(UNITY_PTR_ATTRIBUTE const UNITY_UINT16*)actual; + increment = sizeof(UNITY_UINT16); + } + break; + +#ifdef UNITY_SUPPORT_64 + case 8: + /* fixing problems with signed overflow on unsigned numbers */ + if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) + { + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT64*)actual; + increment = sizeof(UNITY_INT64); + } + else + { + expect_val = (UNITY_INT)*(UNITY_PTR_ATTRIBUTE const UNITY_UINT64*)expected; + actual_val = (UNITY_INT)*(UNITY_PTR_ATTRIBUTE const UNITY_UINT64*)actual; + increment = sizeof(UNITY_UINT64); + } + break; +#endif + + default: /* default is length 4 bytes */ + case 4: + /* fixing problems with signed overflow on unsigned numbers */ + if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) + { + expect_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)expected; + actual_val = *(UNITY_PTR_ATTRIBUTE const UNITY_INT32*)actual; + increment = sizeof(UNITY_INT32); + } + else + { + expect_val = (UNITY_INT)*(UNITY_PTR_ATTRIBUTE const UNITY_UINT32*)expected; + actual_val = (UNITY_INT)*(UNITY_PTR_ATTRIBUTE const UNITY_UINT32*)actual; + increment = sizeof(UNITY_UINT32); + } + length = 4; + break; + } + + if ((style & UNITY_DISPLAY_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) + { + if (actual_val > expect_val) + { + Unity.CurrentTestFailed = (((UNITY_UINT)actual_val - (UNITY_UINT)expect_val) > delta); + } + else + { + Unity.CurrentTestFailed = (((UNITY_UINT)expect_val - (UNITY_UINT)actual_val) > delta); + } + } + else + { + if ((UNITY_UINT)actual_val > (UNITY_UINT)expect_val) + { + Unity.CurrentTestFailed = (((UNITY_UINT)actual_val - (UNITY_UINT)expect_val) > delta); + } + else + { + Unity.CurrentTestFailed = (((UNITY_UINT)expect_val - (UNITY_UINT)actual_val) > delta); + } + } + + if (Unity.CurrentTestFailed) + { + if ((style & UNITY_DISPLAY_RANGE_UINT) && (length < (UNITY_INT_WIDTH / 8))) + { /* For UINT, remove sign extension (padding 1's) from signed type casts above */ + UNITY_INT mask = 1; + mask = (mask << 8 * length) - 1; + expect_val &= mask; + actual_val &= mask; + } + UnityTestResultsFailBegin(lineNumber); + UnityPrint(UnityStrDelta); + UnityPrintIntNumberByStyle((UNITY_INT)delta, style); + UnityPrint(UnityStrElement); + UnityPrintNumberUnsigned(num_elements - elements - 1); + UnityPrint(UnityStrExpected); + UnityPrintIntNumberByStyle(expect_val, style); + UnityPrint(UnityStrWas); + UnityPrintIntNumberByStyle(actual_val, style); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } + /* Walk through array by incrementing the pointers */ + if (flags == UNITY_ARRAY_TO_ARRAY) + { + expected = (UNITY_INTERNAL_PTR)((const char*)expected + increment); + } + actual = (UNITY_INTERNAL_PTR)((const char*)actual + increment); + } +} + +/*-----------------------------------------------*/ +void UnityAssertEqualString(const char* expected, + const char* actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber) +{ + UNITY_UINT32 i; + + RETURN_IF_FAIL_OR_IGNORE; + + /* if both pointers not null compare the strings */ + if (expected && actual) + { + for (i = 0; expected[i] || actual[i]; i++) + { + if (expected[i] != actual[i]) + { + Unity.CurrentTestFailed = 1; + break; + } + } + } + else + { /* fail if either null but not if both */ + if (expected || actual) + { + Unity.CurrentTestFailed = 1; + } + } + + if (Unity.CurrentTestFailed) + { + UnityTestResultsFailBegin(lineNumber); + UnityPrintExpectedAndActualStrings(expected, actual); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } +} + +/*-----------------------------------------------*/ +void UnityAssertEqualStringLen(const char* expected, + const char* actual, + const UNITY_UINT32 length, + const char* msg, + const UNITY_LINE_TYPE lineNumber) +{ + UNITY_UINT32 i; + + RETURN_IF_FAIL_OR_IGNORE; + + /* if both pointers not null compare the strings */ + if (expected && actual) + { + for (i = 0; (i < length) && (expected[i] || actual[i]); i++) + { + if (expected[i] != actual[i]) + { + Unity.CurrentTestFailed = 1; + break; + } + } + } + else + { /* fail if either null but not if both */ + if (expected || actual) + { + Unity.CurrentTestFailed = 1; + } + } + + if (Unity.CurrentTestFailed) + { + UnityTestResultsFailBegin(lineNumber); + UnityPrintExpectedAndActualStringsLen(expected, actual, length); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } +} + +/*-----------------------------------------------*/ +void UnityAssertEqualStringArray(UNITY_INTERNAL_PTR expected, + const char** actual, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLAGS_T flags) +{ + UNITY_UINT32 i = 0; + UNITY_UINT32 j = 0; + const char* expd = NULL; + const char* act = NULL; + + RETURN_IF_FAIL_OR_IGNORE; + + /* if no elements, it's an error */ + if (num_elements == 0) + { +#ifdef UNITY_COMPARE_PTRS_ON_ZERO_ARRAY + UNITY_TEST_ASSERT_EQUAL_PTR(expected, actual, lineNumber, msg); +#else + UnityPrintPointlessAndBail(); +#endif + } + + if ((const void*)expected == (const void*)actual) + { + return; /* Both are NULL or same pointer */ + } + + if (UnityIsOneArrayNull((UNITY_INTERNAL_PTR)expected, (UNITY_INTERNAL_PTR)actual, lineNumber, msg)) + { + UNITY_FAIL_AND_BAIL; + } + + if (flags != UNITY_ARRAY_TO_ARRAY) + { + expd = (const char*)expected; + } + + do + { + act = actual[j]; + if (flags == UNITY_ARRAY_TO_ARRAY) + { + expd = ((const char* const*)expected)[j]; + } + + /* if both pointers not null compare the strings */ + if (expd && act) + { + for (i = 0; expd[i] || act[i]; i++) + { + if (expd[i] != act[i]) + { + Unity.CurrentTestFailed = 1; + break; + } + } + } + else + { /* handle case of one pointers being null (if both null, test should pass) */ + if (expd != act) + { + Unity.CurrentTestFailed = 1; + } + } + + if (Unity.CurrentTestFailed) + { + UnityTestResultsFailBegin(lineNumber); + if (num_elements > 1) + { + UnityPrint(UnityStrElement); + UnityPrintNumberUnsigned(j); + } + UnityPrintExpectedAndActualStrings(expd, act); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } + } while (++j < num_elements); +} + +/*-----------------------------------------------*/ +void UnityAssertEqualMemory(UNITY_INTERNAL_PTR expected, + UNITY_INTERNAL_PTR actual, + const UNITY_UINT32 length, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLAGS_T flags) +{ + UNITY_PTR_ATTRIBUTE const unsigned char* ptr_exp = (UNITY_PTR_ATTRIBUTE const unsigned char*)expected; + UNITY_PTR_ATTRIBUTE const unsigned char* ptr_act = (UNITY_PTR_ATTRIBUTE const unsigned char*)actual; + UNITY_UINT32 elements = num_elements; + UNITY_UINT32 bytes; + + RETURN_IF_FAIL_OR_IGNORE; + + if (elements == 0) + { +#ifdef UNITY_COMPARE_PTRS_ON_ZERO_ARRAY + UNITY_TEST_ASSERT_EQUAL_PTR(expected, actual, lineNumber, msg); +#else + UnityPrintPointlessAndBail(); +#endif + } + if (length == 0) + { + UnityPrintPointlessAndBail(); + } + + if (expected == actual) + { + return; /* Both are NULL or same pointer */ + } + + if (UnityIsOneArrayNull(expected, actual, lineNumber, msg)) + { + UNITY_FAIL_AND_BAIL; + } + + while (elements--) + { + bytes = length; + while (bytes--) + { + if (*ptr_exp != *ptr_act) + { + UnityTestResultsFailBegin(lineNumber); + UnityPrint(UnityStrMemory); + if (num_elements > 1) + { + UnityPrint(UnityStrElement); + UnityPrintNumberUnsigned(num_elements - elements - 1); + } + UnityPrint(UnityStrByte); + UnityPrintNumberUnsigned(length - bytes - 1); + UnityPrint(UnityStrExpected); + UnityPrintIntNumberByStyle(*ptr_exp, UNITY_DISPLAY_STYLE_HEX8); + UnityPrint(UnityStrWas); + UnityPrintIntNumberByStyle(*ptr_act, UNITY_DISPLAY_STYLE_HEX8); + UnityAddMsgIfSpecified(msg); + UNITY_FAIL_AND_BAIL; + } + ptr_exp++; + ptr_act++; + } + if (flags == UNITY_ARRAY_TO_VAL) + { + ptr_exp = (UNITY_PTR_ATTRIBUTE const unsigned char*)expected; + } + } +} + +/*-----------------------------------------------*/ + +static union +{ + UNITY_INT8 i8; + UNITY_INT16 i16; + UNITY_INT32 i32; +#ifdef UNITY_SUPPORT_64 + UNITY_INT64 i64; +#endif +#ifndef UNITY_EXCLUDE_FLOAT + float f; +#endif +#ifndef UNITY_EXCLUDE_DOUBLE + double d; +#endif +} UnityQuickCompare; + +UNITY_INTERNAL_PTR UnityNumToPtr(const UNITY_INT num, const UNITY_UINT8 size) +{ + switch(size) + { + case 1: + UnityQuickCompare.i8 = (UNITY_INT8)num; + return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i8); + + case 2: + UnityQuickCompare.i16 = (UNITY_INT16)num; + return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i16); + +#ifdef UNITY_SUPPORT_64 + case 8: + UnityQuickCompare.i64 = (UNITY_INT64)num; + return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i64); +#endif + + default: /* 4 bytes */ + UnityQuickCompare.i32 = (UNITY_INT32)num; + return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.i32); + } +} + +#ifndef UNITY_EXCLUDE_FLOAT +/*-----------------------------------------------*/ +UNITY_INTERNAL_PTR UnityFloatToPtr(const float num) +{ + UnityQuickCompare.f = num; + return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.f); +} +#endif + +#ifndef UNITY_EXCLUDE_DOUBLE +/*-----------------------------------------------*/ +UNITY_INTERNAL_PTR UnityDoubleToPtr(const double num) +{ + UnityQuickCompare.d = num; + return (UNITY_INTERNAL_PTR)(&UnityQuickCompare.d); +} +#endif + +#ifdef UNITY_INCLUDE_PRINT_FORMATTED + +/*----------------------------------------------- + * printf length modifier helpers + *-----------------------------------------------*/ + +enum UnityLengthModifier { + UNITY_LENGTH_MODIFIER_NONE, + UNITY_LENGTH_MODIFIER_LONG_LONG, + UNITY_LENGTH_MODIFIER_LONG, +}; + +#define UNITY_EXTRACT_ARG(NUMBER_T, NUMBER, LENGTH_MOD, VA, ARG_T) \ +do { \ + switch (LENGTH_MOD) \ + { \ + case UNITY_LENGTH_MODIFIER_LONG_LONG: \ + { \ + NUMBER = (NUMBER_T)va_arg(VA, long long ARG_T); \ + break; \ + } \ + case UNITY_LENGTH_MODIFIER_LONG: \ + { \ + NUMBER = (NUMBER_T)va_arg(VA, long ARG_T); \ + break; \ + } \ + case UNITY_LENGTH_MODIFIER_NONE: \ + default: \ + { \ + NUMBER = (NUMBER_T)va_arg(VA, ARG_T); \ + break; \ + } \ + } \ +} while (0) + +static enum UnityLengthModifier UnityLengthModifierGet(const char *pch, int *length) +{ + enum UnityLengthModifier length_mod; + switch (pch[0]) + { + case 'l': + { + if (pch[1] == 'l') + { + *length = 2; + length_mod = UNITY_LENGTH_MODIFIER_LONG_LONG; + } + else + { + *length = 1; + length_mod = UNITY_LENGTH_MODIFIER_LONG; + } + break; + } + case 'h': + { + /* short and char are converted to int */ + length_mod = UNITY_LENGTH_MODIFIER_NONE; + if (pch[1] == 'h') + { + *length = 2; + } + else + { + *length = 1; + } + break; + } + case 'j': + case 'z': + case 't': + case 'L': + { + /* Not supported, but should gobble up the length specifier anyway */ + length_mod = UNITY_LENGTH_MODIFIER_NONE; + *length = 1; + break; + } + default: + { + length_mod = UNITY_LENGTH_MODIFIER_NONE; + *length = 0; + } + } + return length_mod; +} + +/*----------------------------------------------- + * printf helper function + *-----------------------------------------------*/ +static void UnityPrintFVA(const char* format, va_list va) +{ + const char* pch = format; + if (pch != NULL) + { + while (*pch) + { + /* format identification character */ + if (*pch == '%') + { + pch++; + + if (pch != NULL) + { + int length_mod_size; + enum UnityLengthModifier length_mod = UnityLengthModifierGet(pch, &length_mod_size); + pch += length_mod_size; + + switch (*pch) + { + case 'd': + case 'i': + { + UNITY_INT number; + UNITY_EXTRACT_ARG(UNITY_INT, number, length_mod, va, int); + UnityPrintNumber((UNITY_INT)number); + break; + } +#ifndef UNITY_EXCLUDE_FLOAT_PRINT + case 'f': + case 'g': + { + const double number = va_arg(va, double); + UnityPrintFloat((UNITY_DOUBLE)number); + break; + } +#endif + case 'u': + { + UNITY_UINT number; + UNITY_EXTRACT_ARG(UNITY_UINT, number, length_mod, va, unsigned int); + UnityPrintNumberUnsigned(number); + break; + } + case 'b': + { + UNITY_UINT number; + UNITY_EXTRACT_ARG(UNITY_UINT, number, length_mod, va, unsigned int); + const UNITY_UINT mask = (UNITY_UINT)0 - (UNITY_UINT)1; + UNITY_OUTPUT_CHAR('0'); + UNITY_OUTPUT_CHAR('b'); + UnityPrintMask(mask, number); + break; + } + case 'x': + case 'X': + { + UNITY_UINT number; + UNITY_EXTRACT_ARG(UNITY_UINT, number, length_mod, va, unsigned int); + UNITY_OUTPUT_CHAR('0'); + UNITY_OUTPUT_CHAR('x'); + UnityPrintNumberHex(number, UNITY_MAX_NIBBLES); + break; + } + case 'p': + { + UNITY_UINT number; + char nibbles_to_print = 8; + if (UNITY_POINTER_WIDTH == 64) + { + length_mod = UNITY_LENGTH_MODIFIER_LONG_LONG; + nibbles_to_print = 16; + } + UNITY_EXTRACT_ARG(UNITY_UINT, number, length_mod, va, unsigned int); + UNITY_OUTPUT_CHAR('0'); + UNITY_OUTPUT_CHAR('x'); + UnityPrintNumberHex((UNITY_UINT)number, nibbles_to_print); + break; + } + case 'c': + { + const int ch = va_arg(va, int); + UnityPrintChar((const char *)&ch); + break; + } + case 's': + { + const char * string = va_arg(va, const char *); + UnityPrint(string); + break; + } + case '%': + { + UnityPrintChar(pch); + break; + } + default: + { + /* print the unknown format character */ + UNITY_OUTPUT_CHAR('%'); + UnityPrintChar(pch); + break; + } + } + } + } +#ifdef UNITY_OUTPUT_COLOR + /* print ANSI escape code */ + else if ((*pch == 27) && (*(pch + 1) == '[')) + { + pch += UnityPrintAnsiEscapeString(pch); + continue; + } +#endif + else if (*pch == '\n') + { + UNITY_PRINT_EOL(); + } + else + { + UnityPrintChar(pch); + } + + pch++; + } + } +} + +void UnityPrintF(const UNITY_LINE_TYPE line, const char* format, ...) +{ + UnityTestResultsBegin(Unity.TestFile, line); + UnityPrint("INFO"); + if(format != NULL) + { + UnityPrint(": "); + va_list va; + va_start(va, format); + UnityPrintFVA(format, va); + va_end(va); + } + UNITY_PRINT_EOL(); +} +#endif /* ! UNITY_INCLUDE_PRINT_FORMATTED */ + + +/*----------------------------------------------- + * Control Functions + *-----------------------------------------------*/ + +/*-----------------------------------------------*/ +void UnityFail(const char* msg, const UNITY_LINE_TYPE line) +{ + RETURN_IF_FAIL_OR_IGNORE; + + UnityTestResultsBegin(Unity.TestFile, line); + UnityPrint(UnityStrFail); + UnityAddMsgIfSpecified(msg); + + UNITY_FAIL_AND_BAIL; +} + +/*-----------------------------------------------*/ +void UnityIgnore(const char* msg, const UNITY_LINE_TYPE line) +{ + RETURN_IF_FAIL_OR_IGNORE; + + UnityTestResultsBegin(Unity.TestFile, line); + UnityPrint(UnityStrIgnore); + if (msg != NULL) + { + UNITY_OUTPUT_CHAR(':'); + UNITY_OUTPUT_CHAR(' '); + UnityPrint(msg); + } + UNITY_IGNORE_AND_BAIL; +} + +/*-----------------------------------------------*/ +void UnityMessage(const char* msg, const UNITY_LINE_TYPE line) +{ + UnityTestResultsBegin(Unity.TestFile, line); + UnityPrint("INFO"); + if (msg != NULL) + { + UNITY_OUTPUT_CHAR(':'); + UNITY_OUTPUT_CHAR(' '); + UnityPrint(msg); + } + UNITY_PRINT_EOL(); +} + +/*-----------------------------------------------*/ +/* If we have not defined our own test runner, then include our default test runner to make life easier */ +#ifndef UNITY_SKIP_DEFAULT_RUNNER +void UnityDefaultTestRun(UnityTestFunction Func, const char* FuncName, const int FuncLineNum) +{ + Unity.CurrentTestName = FuncName; + Unity.CurrentTestLineNumber = (UNITY_LINE_TYPE)FuncLineNum; + Unity.NumberOfTests++; + #ifndef UNITY_EXCLUDE_DETAILS + #ifdef UNITY_DETAIL_STACK_SIZE + Unity.CurrentDetailStackSize = 0; + #else + UNITY_CLR_DETAILS(); + #endif + #endif + UNITY_EXEC_TIME_START(); + if (TEST_PROTECT()) + { + setUp(); + Func(); + } + if (TEST_PROTECT()) + { + tearDown(); + } + UNITY_EXEC_TIME_STOP(); + UnityConcludeTest(); +} +#endif + +/*-----------------------------------------------*/ +void UnitySetTestFile(const char* filename) +{ + Unity.TestFile = filename; +} + +/*-----------------------------------------------*/ +void UnityBegin(const char* filename) +{ + Unity.TestFile = filename; + Unity.CurrentTestName = NULL; + Unity.CurrentTestLineNumber = 0; + Unity.NumberOfTests = 0; + Unity.TestFailures = 0; + Unity.TestIgnores = 0; + Unity.CurrentTestFailed = 0; + Unity.CurrentTestIgnored = 0; + + UNITY_CLR_DETAILS(); + UNITY_OUTPUT_START(); +} + +/*-----------------------------------------------*/ +int UnityEnd(void) +{ + UNITY_PRINT_EOL(); + UnityPrint(UnityStrBreaker); + UNITY_PRINT_EOL(); + UnityPrintNumber((UNITY_INT)(Unity.NumberOfTests)); + UnityPrint(UnityStrResultsTests); + UnityPrintNumber((UNITY_INT)(Unity.TestFailures)); + UnityPrint(UnityStrResultsFailures); + UnityPrintNumber((UNITY_INT)(Unity.TestIgnores)); + UnityPrint(UnityStrResultsIgnored); + UNITY_PRINT_EOL(); + if (Unity.TestFailures == 0U) + { + UnityPrint(UnityStrOk); + } + else + { + UnityPrint(UnityStrFail); +#ifdef UNITY_DIFFERENTIATE_FINAL_FAIL + UNITY_OUTPUT_CHAR('E'); UNITY_OUTPUT_CHAR('D'); +#endif + } + UNITY_PRINT_EOL(); + UNITY_FLUSH_CALL(); + UNITY_OUTPUT_COMPLETE(); + return (int)(Unity.TestFailures); +} + +/*----------------------------------------------- + * Details Stack + *-----------------------------------------------*/ +#ifndef UNITY_EXCLUDE_DETAILS +#ifdef UNITY_DETAIL_STACK_SIZE +void UnityPushDetail(UNITY_DETAIL_LABEL_TYPE label, UNITY_DETAIL_VALUE_TYPE value, const UNITY_LINE_TYPE line) { + if (Unity.CurrentDetailStackSize >= UNITY_DETAIL_STACK_SIZE) { + UnityTestResultsFailBegin(line); + UnityPrint(UnityStrErrDetailStackFull); + UnityAddMsgIfSpecified(NULL); + UNITY_FAIL_AND_BAIL; + } + if (label >= UnityStrDetailLabelsCount) { + UnityTestResultsFailBegin(line); + UnityPrint(UnityStrErrDetailStackLabel); + UnityPrintNumberUnsigned(label); + UnityAddMsgIfSpecified(NULL); + UNITY_FAIL_AND_BAIL; + } + Unity.CurrentDetailStackLabels[Unity.CurrentDetailStackSize] = label; + Unity.CurrentDetailStackValues[Unity.CurrentDetailStackSize++] = value; +} +void UnityPopDetail(UNITY_DETAIL_LABEL_TYPE label, UNITY_DETAIL_VALUE_TYPE value, const UNITY_LINE_TYPE line) { + if (Unity.CurrentDetailStackSize == 0) { + UnityTestResultsFailBegin(line); + UnityPrint(UnityStrErrDetailStackEmpty); + UnityAddMsgIfSpecified(NULL); + UNITY_FAIL_AND_BAIL; + } + if ((Unity.CurrentDetailStackLabels[Unity.CurrentDetailStackSize-1] != label) || (Unity.CurrentDetailStackValues[Unity.CurrentDetailStackSize-1] != value)) { + UnityTestResultsFailBegin(line); + UnityPrint(UnityStrErrDetailStackPop); + UnityAddMsgIfSpecified(NULL); + UNITY_FAIL_AND_BAIL; + } + Unity.CurrentDetailStackSize--; +} +#endif +#endif + +/*----------------------------------------------- + * Command Line Argument Support + *-----------------------------------------------*/ +#ifdef UNITY_USE_COMMAND_LINE_ARGS + +char* UnityOptionIncludeNamed = NULL; +char* UnityOptionExcludeNamed = NULL; +int UnityVerbosity = 1; +int UnityStrictMatch = 0; + +/*-----------------------------------------------*/ +int UnityParseOptions(int argc, char** argv) +{ + int i; + UnityOptionIncludeNamed = NULL; + UnityOptionExcludeNamed = NULL; + UnityStrictMatch = 0; + + for (i = 1; i < argc; i++) + { + if (argv[i][0] == '-') + { + switch (argv[i][1]) + { + case 'l': /* list tests */ + return -1; + case 'n': /* include tests with name including this string */ + case 'f': /* an alias for -n */ + UnityStrictMatch = (argv[i][1] == 'n'); /* strictly match this string if -n */ + if (argv[i][2] == '=') + { + UnityOptionIncludeNamed = &argv[i][3]; + } + else if (++i < argc) + { + UnityOptionIncludeNamed = argv[i]; + } + else + { + UnityPrint("ERROR: No Test String to Include Matches For"); + UNITY_PRINT_EOL(); + return 1; + } + break; + case 'q': /* quiet */ + UnityVerbosity = 0; + break; + case 'v': /* verbose */ + UnityVerbosity = 2; + break; + case 'x': /* exclude tests with name including this string */ + if (argv[i][2] == '=') + { + UnityOptionExcludeNamed = &argv[i][3]; + } + else if (++i < argc) + { + UnityOptionExcludeNamed = argv[i]; + } + else + { + UnityPrint("ERROR: No Test String to Exclude Matches For"); + UNITY_PRINT_EOL(); + return 1; + } + break; + default: + UnityPrint("ERROR: Unknown Option "); + UNITY_OUTPUT_CHAR(argv[i][1]); + UNITY_PRINT_EOL(); + /* Now display help */ + /* FALLTHRU */ + case 'h': + UnityPrint("Options: "); UNITY_PRINT_EOL(); + UnityPrint("-l List all tests and exit"); UNITY_PRINT_EOL(); + UnityPrint("-f NAME Filter to run only tests whose name includes NAME"); UNITY_PRINT_EOL(); + UnityPrint("-n NAME Run only the test named NAME"); UNITY_PRINT_EOL(); + UnityPrint("-h show this Help menu"); UNITY_PRINT_EOL(); + UnityPrint("-q Quiet/decrease verbosity"); UNITY_PRINT_EOL(); + UnityPrint("-v increase Verbosity"); UNITY_PRINT_EOL(); + UnityPrint("-x NAME eXclude tests whose name includes NAME"); UNITY_PRINT_EOL(); + UNITY_OUTPUT_FLUSH(); + return 1; + } + } + } + + return 0; +} + +/*-----------------------------------------------*/ +static int IsStringInBiggerString(const char* longstring, const char* shortstring) +{ + const char* lptr = longstring; + const char* sptr = shortstring; + const char* lnext = lptr; + + if (*sptr == '*') + { + return UnityStrictMatch ? 0 : 1; + } + + while (*lptr) + { + lnext = lptr + 1; + + /* If they current bytes match, go on to the next bytes */ + while (*lptr && *sptr && (*lptr == *sptr)) + { + lptr++; + sptr++; + + switch (*sptr) + { + case '*': /* we encountered a wild-card */ + return UnityStrictMatch ? 0 : 1; + + case ',': /* we encountered the end of match string */ + case '"': + case '\'': + case 0: + return (!UnityStrictMatch || (*lptr == 0)) ? 1 : 0; + + case ':': /* we encountered the end of a partial match */ + return 2; + + default: + break; + } + } + + /* If we didn't match and we're on strict matching, we already know we failed */ + if (UnityStrictMatch) + { + return 0; + } + + /* Otherwise we start in the long pointer 1 character further and try again */ + lptr = lnext; + sptr = shortstring; + } + + return 0; +} + +/*-----------------------------------------------*/ +static int UnityStringArgumentMatches(const char* str) +{ + int retval; + const char* ptr1; + const char* ptr2; + const char* ptrf; + + /* Go through the options and get the substrings for matching one at a time */ + ptr1 = str; + while (ptr1[0] != 0) + { + if ((ptr1[0] == '"') || (ptr1[0] == '\'')) + { + ptr1++; + } + + /* look for the start of the next partial */ + ptr2 = ptr1; + ptrf = 0; + do + { + ptr2++; + if ((ptr2[0] == ':') && (ptr2[1] != 0) && (ptr2[0] != '\'') && (ptr2[0] != '"') && (ptr2[0] != ',')) + { + ptrf = &ptr2[1]; + } + } while ((ptr2[0] != 0) && (ptr2[0] != '\'') && (ptr2[0] != '"') && (ptr2[0] != ',')); + + while ((ptr2[0] != 0) && ((ptr2[0] == ':') || (ptr2[0] == '\'') || (ptr2[0] == '"') || (ptr2[0] == ','))) + { + ptr2++; + } + + /* done if complete filename match */ + retval = IsStringInBiggerString(Unity.TestFile, ptr1); + if (retval == 1) + { + return retval; + } + + /* done if testname match after filename partial match */ + if ((retval == 2) && (ptrf != 0)) + { + if (IsStringInBiggerString(Unity.CurrentTestName, ptrf)) + { + return 1; + } + } + + /* done if complete testname match */ + if (IsStringInBiggerString(Unity.CurrentTestName, ptr1) == 1) + { + return 1; + } + + ptr1 = ptr2; + } + + /* we couldn't find a match for any substrings */ + return 0; +} + +/*-----------------------------------------------*/ +int UnityTestMatches(void) +{ + /* Check if this test name matches the included test pattern */ + int retval; + if (UnityOptionIncludeNamed) + { + retval = UnityStringArgumentMatches(UnityOptionIncludeNamed); + } + else + { + retval = 1; + } + + /* Check if this test name matches the excluded test pattern */ + if (UnityOptionExcludeNamed) + { + if (UnityStringArgumentMatches(UnityOptionExcludeNamed)) + { + retval = 0; + } + } + + return retval; +} + +#endif /* UNITY_USE_COMMAND_LINE_ARGS */ +/*-----------------------------------------------*/ diff --git a/tests/vendor/unity/unity.h b/tests/vendor/unity/unity.h new file mode 100644 index 0000000..8f1b8d4 --- /dev/null +++ b/tests/vendor/unity/unity.h @@ -0,0 +1,698 @@ +/* ========================================================================= + Unity - A Test Framework for C + ThrowTheSwitch.org + Copyright (c) 2007-26 Mike Karlesky, Mark VanderVoord, & Greg Williams + SPDX-License-Identifier: MIT +========================================================================= */ + +#ifndef UNITY_FRAMEWORK_H +#define UNITY_FRAMEWORK_H +#define UNITY + +#define UNITY_VERSION_MAJOR 2 +#define UNITY_VERSION_MINOR 6 +#define UNITY_VERSION_BUILD 3 +#define UNITY_VERSION ((UNITY_VERSION_MAJOR << 16) | (UNITY_VERSION_MINOR << 8) | UNITY_VERSION_BUILD) + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include "unity_internals.h" + +/*------------------------------------------------------- + * Test Setup / Teardown + *-------------------------------------------------------*/ + +/* These functions are intended to be called before and after each test. + * If using unity directly, these will need to be provided for each test + * executable built. If you are using the test runner generator and/or + * Ceedling, these are optional. */ +void setUp(void); +void tearDown(void); + +/* These functions are intended to be called at the beginning and end of an + * entire test suite. suiteTearDown() is passed the number of tests that + * failed, and its return value becomes the exit code of main(). If using + * Unity directly, you're in charge of calling these if they are desired. + * If using Ceedling or the test runner generator, these will be called + * automatically if they exist. */ +void suiteSetUp(void); +int suiteTearDown(int num_failures); + +/*------------------------------------------------------- + * Test Reset and Verify + *-------------------------------------------------------*/ + +/* These functions are intended to be called before or during tests in order + * to support complex test loops, etc. Both are NOT built into Unity. Instead + * the test runner generator will create them. resetTest will run teardown and + * setup again, verifying any end-of-test needs between. verifyTest will only + * run the verification. */ +void resetTest(void); +void verifyTest(void); + +/*------------------------------------------------------- + * Configuration Options + *------------------------------------------------------- + * All options described below should be passed as a compiler flag to all files using Unity. If you must add #defines, place them BEFORE the #include above. + + * Integers/longs/pointers + * - Unity attempts to automatically discover your integer sizes + * - define UNITY_EXCLUDE_STDINT_H to stop attempting to look in + * - define UNITY_EXCLUDE_LIMITS_H to stop attempting to look in + * - If you cannot use the automatic methods above, you can force Unity by using these options: + * - define UNITY_SUPPORT_64 + * - set UNITY_INT_WIDTH + * - set UNITY_LONG_WIDTH + * - set UNITY_POINTER_WIDTH + + * Floats + * - define UNITY_EXCLUDE_FLOAT to disallow floating point comparisons + * - define UNITY_FLOAT_PRECISION to specify the precision to use when doing TEST_ASSERT_EQUAL_FLOAT + * - define UNITY_FLOAT_TYPE to specify doubles instead of single precision floats + * - define UNITY_INCLUDE_DOUBLE to allow double floating point comparisons + * - define UNITY_EXCLUDE_DOUBLE to disallow double floating point comparisons (default) + * - define UNITY_DOUBLE_PRECISION to specify the precision to use when doing TEST_ASSERT_EQUAL_DOUBLE + * - define UNITY_DOUBLE_TYPE to specify something other than double + * - define UNITY_EXCLUDE_FLOAT_PRINT to trim binary size, won't print floating point values in errors + + * Output + * - by default, Unity prints to standard out with putchar. define UNITY_OUTPUT_CHAR(a) with a different function if desired + * - define UNITY_DIFFERENTIATE_FINAL_FAIL to print FAILED (vs. FAIL) at test end summary - for automated search for failure + + * Optimization + * - by default, line numbers are stored in unsigned shorts. Define UNITY_LINE_TYPE with a different type if your files are huge + * - by default, test and failure counters are unsigned shorts. Define UNITY_COUNTER_TYPE with a different type if you want to save space or have more than 65535 Tests. + + * Test Cases + * - define UNITY_SUPPORT_TEST_CASES to include the TEST_CASE macro, though really it's mostly about the runner generator script + + * Parameterized Tests + * - you'll want to create a define of TEST_CASE(...), TEST_RANGE(...) and/or TEST_MATRIX(...) which basically evaluates to nothing + + * Tests with Arguments + * - you'll want to define UNITY_USE_COMMAND_LINE_ARGS if you have the test runner passing arguments to Unity + + *------------------------------------------------------- + * Basic Fail and Ignore + *-------------------------------------------------------*/ + +#define TEST_FAIL_MESSAGE(message) UNITY_TEST_FAIL(__LINE__, (message)) +#define TEST_FAIL() UNITY_TEST_FAIL(__LINE__, NULL) +#define TEST_IGNORE_MESSAGE(message) UNITY_TEST_IGNORE(__LINE__, (message)) +#define TEST_IGNORE() UNITY_TEST_IGNORE(__LINE__, NULL) +#define TEST_MESSAGE(message) UnityMessage((message), __LINE__) +#define TEST_ONLY() +#ifdef UNITY_INCLUDE_PRINT_FORMATTED +#define TEST_PRINTF(message, ...) UnityPrintF(__LINE__, (message), ##__VA_ARGS__) +#endif + +/* It is not necessary for you to call PASS. A PASS condition is assumed if nothing fails. + * This method allows you to abort a test immediately with a PASS state, ignoring the remainder of the test. */ +#define TEST_PASS() TEST_ABORT() +#define TEST_PASS_MESSAGE(message) do { UnityMessage((message), __LINE__); TEST_ABORT(); } while (0) + +/*------------------------------------------------------- + * Build Directives + *------------------------------------------------------- + + * These macros do nothing, but they are useful for additional build context. + * Tools (like Ceedling) can scan for these directives and make use of them for + * per-test-executable #include search paths and linking. */ + +/* Add source files to a test executable's compilation and linking. Ex: TEST_SOURCE_FILE("sandwiches.c") */ +#define TEST_SOURCE_FILE(a) + +/* Customize #include search paths for a test executable's compilation. Ex: TEST_INCLUDE_PATH("src/module_a/inc") */ +#define TEST_INCLUDE_PATH(a) + +/*------------------------------------------------------- + * Test Asserts (simple) + *-------------------------------------------------------*/ + +/* Boolean */ +#define TEST_ASSERT(condition) UNITY_TEST_ASSERT( (condition), __LINE__, " Expression Evaluated To FALSE") +#define TEST_ASSERT_TRUE(condition) UNITY_TEST_ASSERT( (condition), __LINE__, " Expected TRUE Was FALSE") +#define TEST_ASSERT_UNLESS(condition) UNITY_TEST_ASSERT( !(condition), __LINE__, " Expression Evaluated To TRUE") +#define TEST_ASSERT_FALSE(condition) UNITY_TEST_ASSERT( !(condition), __LINE__, " Expected FALSE Was TRUE") +#define TEST_ASSERT_NULL(pointer) UNITY_TEST_ASSERT_NULL( (pointer), __LINE__, " Expected NULL") +#define TEST_ASSERT_NOT_NULL(pointer) UNITY_TEST_ASSERT_NOT_NULL((pointer), __LINE__, " Expected Non-NULL") +#define TEST_ASSERT_EMPTY(pointer) UNITY_TEST_ASSERT_EMPTY( (pointer), __LINE__, " Expected Empty") +#define TEST_ASSERT_NOT_EMPTY(pointer) UNITY_TEST_ASSERT_NOT_EMPTY((pointer), __LINE__, " Expected Non-Empty") + +/* Integers (of all sizes) */ +#define TEST_ASSERT_EQUAL_INT(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_INT8(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT8((expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_INT16(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT16((expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_INT32(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT32((expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_INT64(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT64((expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_UINT(expected, actual) UNITY_TEST_ASSERT_EQUAL_UINT( (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_UINT8(expected, actual) UNITY_TEST_ASSERT_EQUAL_UINT8( (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_UINT16(expected, actual) UNITY_TEST_ASSERT_EQUAL_UINT16( (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_UINT32(expected, actual) UNITY_TEST_ASSERT_EQUAL_UINT32( (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_UINT64(expected, actual) UNITY_TEST_ASSERT_EQUAL_UINT64( (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_size_t(expected, actual) UNITY_TEST_ASSERT_EQUAL_UINT((expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_HEX(expected, actual) UNITY_TEST_ASSERT_EQUAL_HEX32((expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_HEX8(expected, actual) UNITY_TEST_ASSERT_EQUAL_HEX8( (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_HEX16(expected, actual) UNITY_TEST_ASSERT_EQUAL_HEX16((expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_HEX32(expected, actual) UNITY_TEST_ASSERT_EQUAL_HEX32((expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_HEX64(expected, actual) UNITY_TEST_ASSERT_EQUAL_HEX64((expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_CHAR(expected, actual) UNITY_TEST_ASSERT_EQUAL_CHAR((expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_BITS(mask, expected, actual) UNITY_TEST_ASSERT_BITS((mask), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_BITS_HIGH(mask, actual) UNITY_TEST_ASSERT_BITS((mask), (UNITY_UINT)(-1), (actual), __LINE__, NULL) +#define TEST_ASSERT_BITS_LOW(mask, actual) UNITY_TEST_ASSERT_BITS((mask), (UNITY_UINT)(0), (actual), __LINE__, NULL) +#define TEST_ASSERT_BIT_HIGH(bit, actual) UNITY_TEST_ASSERT_BITS(((UNITY_UINT)1 << (bit)), (UNITY_UINT)(-1), (actual), __LINE__, NULL) +#define TEST_ASSERT_BIT_LOW(bit, actual) UNITY_TEST_ASSERT_BITS(((UNITY_UINT)1 << (bit)), (UNITY_UINT)(0), (actual), __LINE__, NULL) + +/* Integer Not Equal To (of all sizes) */ +#define TEST_ASSERT_NOT_EQUAL_INT(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_INT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_NOT_EQUAL_INT8(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_INT8((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_NOT_EQUAL_INT16(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_INT16((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_NOT_EQUAL_INT32(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_INT32((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_NOT_EQUAL_INT64(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_INT64((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_NOT_EQUAL_UINT(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_UINT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_NOT_EQUAL_UINT8(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_UINT8((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_NOT_EQUAL_UINT16(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_UINT16((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_NOT_EQUAL_UINT32(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_UINT32((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_NOT_EQUAL_UINT64(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_UINT64((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_NOT_EQUAL_size_t(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_UINT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_NOT_EQUAL_HEX8(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_HEX8((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_NOT_EQUAL_HEX16(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_HEX16((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_NOT_EQUAL_HEX32(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_HEX32((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_NOT_EQUAL_HEX64(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_HEX64((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_NOT_EQUAL_CHAR(threshold, actual) UNITY_TEST_ASSERT_NOT_EQUAL_CHAR((threshold), (actual), __LINE__, NULL) + +/* Integer Greater Than/ Less Than (of all sizes) */ +#define TEST_ASSERT_GREATER_THAN(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_INT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_THAN_INT(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_INT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_THAN_INT8(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_INT8((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_THAN_INT16(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_INT16((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_THAN_INT32(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_INT32((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_THAN_INT64(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_INT64((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_THAN_UINT(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_UINT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_THAN_UINT8(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_UINT8((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_THAN_UINT16(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_UINT16((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_THAN_UINT32(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_UINT32((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_THAN_UINT64(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_UINT64((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_THAN_size_t(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_UINT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_THAN_HEX8(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_HEX8((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_THAN_HEX16(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_HEX16((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_THAN_HEX32(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_HEX32((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_THAN_HEX64(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_HEX64((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_THAN_CHAR(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_CHAR((threshold), (actual), __LINE__, NULL) + +#define TEST_ASSERT_LESS_THAN(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_INT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_THAN_INT(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_INT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_THAN_INT8(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_INT8((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_THAN_INT16(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_INT16((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_THAN_INT32(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_INT32((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_THAN_INT64(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_INT64((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_THAN_UINT(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_UINT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_THAN_UINT8(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_UINT8((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_THAN_UINT16(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_UINT16((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_THAN_UINT32(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_UINT32((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_THAN_UINT64(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_UINT64((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_THAN_size_t(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_UINT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_THAN_HEX8(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_HEX8((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_THAN_HEX16(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_HEX16((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_THAN_HEX32(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_HEX32((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_THAN_HEX64(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_HEX64((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_THAN_CHAR(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_CHAR((threshold), (actual), __LINE__, NULL) + +#define TEST_ASSERT_GREATER_OR_EQUAL(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_OR_EQUAL_INT(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_OR_EQUAL_INT8(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT8((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_OR_EQUAL_INT16(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT16((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_OR_EQUAL_INT32(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT32((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_OR_EQUAL_INT64(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT64((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_OR_EQUAL_UINT(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_OR_EQUAL_UINT8(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT8((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_OR_EQUAL_UINT16(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT16((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_OR_EQUAL_UINT32(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT32((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_OR_EQUAL_UINT64(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT64((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_OR_EQUAL_size_t(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_OR_EQUAL_HEX8(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX8((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_OR_EQUAL_HEX16(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX16((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_OR_EQUAL_HEX32(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX32((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_OR_EQUAL_HEX64(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX64((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_OR_EQUAL_CHAR(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_CHAR((threshold), (actual), __LINE__, NULL) + +#define TEST_ASSERT_LESS_OR_EQUAL(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_OR_EQUAL_INT(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_OR_EQUAL_INT8(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT8((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_OR_EQUAL_INT16(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT16((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_OR_EQUAL_INT32(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT32((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_OR_EQUAL_INT64(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT64((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_OR_EQUAL_UINT(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_OR_EQUAL_UINT8(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT8((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_OR_EQUAL_UINT16(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT16((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_OR_EQUAL_UINT32(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT32((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_OR_EQUAL_UINT64(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT64((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_OR_EQUAL_size_t(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_OR_EQUAL_HEX8(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX8((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_OR_EQUAL_HEX16(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX16((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_OR_EQUAL_HEX32(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX32((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_OR_EQUAL_HEX64(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX64((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_OR_EQUAL_CHAR(threshold, actual) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_CHAR((threshold), (actual), __LINE__, NULL) + +/* Integer Ranges (of all sizes) */ +#define TEST_ASSERT_INT_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_INT_WITHIN((delta), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_INT8_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_INT8_WITHIN((delta), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_INT16_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_INT16_WITHIN((delta), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_INT32_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_INT32_WITHIN((delta), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_INT64_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_INT64_WITHIN((delta), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_UINT_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_UINT_WITHIN((delta), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_UINT8_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_UINT8_WITHIN((delta), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_UINT16_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_UINT16_WITHIN((delta), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_UINT32_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_UINT32_WITHIN((delta), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_UINT64_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_UINT64_WITHIN((delta), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_size_t_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_UINT_WITHIN((delta), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_HEX_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_HEX32_WITHIN((delta), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_HEX8_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_HEX8_WITHIN((delta), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_HEX16_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_HEX16_WITHIN((delta), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_HEX32_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_HEX32_WITHIN((delta), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_HEX64_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_HEX64_WITHIN((delta), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_CHAR_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_CHAR_WITHIN((delta), (expected), (actual), __LINE__, NULL) + +/* Integer Array Ranges (of all sizes) */ +#define TEST_ASSERT_INT_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_INT_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL) +#define TEST_ASSERT_INT8_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_INT8_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL) +#define TEST_ASSERT_INT16_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_INT16_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL) +#define TEST_ASSERT_INT32_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_INT32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL) +#define TEST_ASSERT_INT64_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_INT64_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL) +#define TEST_ASSERT_UINT_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_UINT_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL) +#define TEST_ASSERT_UINT8_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_UINT8_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL) +#define TEST_ASSERT_UINT16_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_UINT16_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL) +#define TEST_ASSERT_UINT32_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_UINT32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL) +#define TEST_ASSERT_UINT64_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_UINT64_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL) +#define TEST_ASSERT_size_t_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_UINT_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL) +#define TEST_ASSERT_HEX_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_HEX32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL) +#define TEST_ASSERT_HEX8_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_HEX8_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL) +#define TEST_ASSERT_HEX16_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_HEX16_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL) +#define TEST_ASSERT_HEX32_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_HEX32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL) +#define TEST_ASSERT_HEX64_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_HEX64_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL) +#define TEST_ASSERT_CHAR_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_CHAR_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, NULL) + + +/* Structs and Strings */ +#define TEST_ASSERT_EQUAL_PTR(expected, actual) UNITY_TEST_ASSERT_EQUAL_PTR((expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_STRING(expected, actual) UNITY_TEST_ASSERT_EQUAL_STRING((expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_STRING_LEN(expected, actual, len) UNITY_TEST_ASSERT_EQUAL_STRING_LEN((expected), (actual), (len), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_MEMORY(expected, actual, len) UNITY_TEST_ASSERT_EQUAL_MEMORY((expected), (actual), (len), __LINE__, NULL) + +/* Arrays */ +#define TEST_ASSERT_EQUAL_INT_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_INT_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_INT8_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_INT8_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_INT16_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_INT16_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_INT32_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_INT32_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_UINT_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_UINT8_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_UINT8_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_UINT16_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_UINT16_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_UINT32_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_UINT32_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_size_t_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_HEX_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_HEX8_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_HEX8_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_HEX16_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_HEX16_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_HEX32_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_PTR_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_PTR_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_STRING_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_STRING_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_MEMORY_ARRAY(expected, actual, len, num_elements) UNITY_TEST_ASSERT_EQUAL_MEMORY_ARRAY((expected), (actual), (len), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_CHAR_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_CHAR_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) + +/* Arrays Compared To Single Value */ +#define TEST_ASSERT_EACH_EQUAL_INT(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_INT((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_INT8(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_INT8((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_INT16(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_INT16((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_INT32(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_INT32((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_INT64(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_INT64((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_UINT(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_UINT((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_UINT8(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_UINT8((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_UINT16(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_UINT16((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_UINT32(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_UINT32((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_UINT64(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_UINT64((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_size_t(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_UINT((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_HEX(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_HEX32((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_HEX8(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_HEX8((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_HEX16(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_HEX16((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_HEX32(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_HEX32((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_HEX64(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_HEX64((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_PTR(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_PTR((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_STRING(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_STRING((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_MEMORY(expected, actual, len, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_MEMORY((expected), (actual), (len), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_CHAR(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_CHAR((expected), (actual), (num_elements), __LINE__, NULL) + +/* Floating Point (If Enabled) */ +#define TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_FLOAT_WITHIN((delta), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_FLOAT_NOT_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_FLOAT_NOT_WITHIN((delta), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_FLOAT(expected, actual) UNITY_TEST_ASSERT_EQUAL_FLOAT((expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_NOT_EQUAL_FLOAT(expected, actual) UNITY_TEST_ASSERT_NOT_EQUAL_FLOAT((expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_FLOAT_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_FLOAT_ARRAY_WITHIN((delta), (expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_FLOAT(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_FLOAT((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_GREATER_THAN_FLOAT(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_FLOAT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_OR_EQUAL_FLOAT(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_FLOAT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_THAN_FLOAT(threshold, actual) UNITY_TEST_ASSERT_LESS_THAN_FLOAT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_OR_EQUAL_FLOAT(threshold, actual) UNITY_TEST_ASSERT_LESS_OR_EQUAL_FLOAT((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_FLOAT_IS_INF(actual) UNITY_TEST_ASSERT_FLOAT_IS_INF((actual), __LINE__, NULL) +#define TEST_ASSERT_FLOAT_IS_NEG_INF(actual) UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF((actual), __LINE__, NULL) +#define TEST_ASSERT_FLOAT_IS_NAN(actual) UNITY_TEST_ASSERT_FLOAT_IS_NAN((actual), __LINE__, NULL) +#define TEST_ASSERT_FLOAT_IS_DETERMINATE(actual) UNITY_TEST_ASSERT_FLOAT_IS_DETERMINATE((actual), __LINE__, NULL) +#define TEST_ASSERT_FLOAT_IS_NOT_INF(actual) UNITY_TEST_ASSERT_FLOAT_IS_NOT_INF((actual), __LINE__, NULL) +#define TEST_ASSERT_FLOAT_IS_NOT_NEG_INF(actual) UNITY_TEST_ASSERT_FLOAT_IS_NOT_NEG_INF((actual), __LINE__, NULL) +#define TEST_ASSERT_FLOAT_IS_NOT_NAN(actual) UNITY_TEST_ASSERT_FLOAT_IS_NOT_NAN((actual), __LINE__, NULL) +#define TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(actual) UNITY_TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE((actual), __LINE__, NULL) + +/* Double (If Enabled) */ +#define TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_DOUBLE_WITHIN((delta), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_DOUBLE_NOT_WITHIN(delta, expected, actual) UNITY_TEST_ASSERT_DOUBLE_NOT_WITHIN((delta), (expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_DOUBLE(expected, actual) UNITY_TEST_ASSERT_EQUAL_DOUBLE((expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_NOT_EQUAL_DOUBLE(expected, actual) UNITY_TEST_ASSERT_NOT_EQUAL_DOUBLE((expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_DOUBLE_ARRAY_WITHIN(delta, expected, actual, num_elements) UNITY_TEST_ASSERT_DOUBLE_ARRAY_WITHIN((delta), (expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements) UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_EACH_EQUAL_DOUBLE(expected, actual, num_elements) UNITY_TEST_ASSERT_EACH_EQUAL_DOUBLE((expected), (actual), (num_elements), __LINE__, NULL) +#define TEST_ASSERT_GREATER_THAN_DOUBLE(threshold, actual) UNITY_TEST_ASSERT_GREATER_THAN_DOUBLE((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_GREATER_OR_EQUAL_DOUBLE(threshold, actual) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_DOUBLE((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_THAN_DOUBLE(threshold, actual) UNITY_TEST_ASSERT_LESS_THAN_DOUBLE((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_LESS_OR_EQUAL_DOUBLE(threshold, actual) UNITY_TEST_ASSERT_LESS_OR_EQUAL_DOUBLE((threshold), (actual), __LINE__, NULL) +#define TEST_ASSERT_DOUBLE_IS_INF(actual) UNITY_TEST_ASSERT_DOUBLE_IS_INF((actual), __LINE__, NULL) +#define TEST_ASSERT_DOUBLE_IS_NEG_INF(actual) UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF((actual), __LINE__, NULL) +#define TEST_ASSERT_DOUBLE_IS_NAN(actual) UNITY_TEST_ASSERT_DOUBLE_IS_NAN((actual), __LINE__, NULL) +#define TEST_ASSERT_DOUBLE_IS_DETERMINATE(actual) UNITY_TEST_ASSERT_DOUBLE_IS_DETERMINATE((actual), __LINE__, NULL) +#define TEST_ASSERT_DOUBLE_IS_NOT_INF(actual) UNITY_TEST_ASSERT_DOUBLE_IS_NOT_INF((actual), __LINE__, NULL) +#define TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF(actual) UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF((actual), __LINE__, NULL) +#define TEST_ASSERT_DOUBLE_IS_NOT_NAN(actual) UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NAN((actual), __LINE__, NULL) +#define TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE(actual) UNITY_TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE((actual), __LINE__, NULL) + +/* Shorthand */ +#ifdef UNITY_SHORTHAND_AS_OLD +#define TEST_ASSERT_EQUAL(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_NOT_EQUAL(expected, actual) UNITY_TEST_ASSERT(((expected) != (actual)), __LINE__, " Expected Not-Equal") +#endif +#ifdef UNITY_SHORTHAND_AS_INT +#define TEST_ASSERT_EQUAL(expected, actual) UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, NULL) +#define TEST_ASSERT_NOT_EQUAL(expected, actual) UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand) +#endif +#ifdef UNITY_SHORTHAND_AS_MEM +#define TEST_ASSERT_EQUAL(expected, actual) UNITY_TEST_ASSERT_EQUAL_MEMORY((&expected), (&actual), sizeof(expected), __LINE__, NULL) +#define TEST_ASSERT_NOT_EQUAL(expected, actual) UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand) +#endif +#ifdef UNITY_SHORTHAND_AS_RAW +#define TEST_ASSERT_EQUAL(expected, actual) UNITY_TEST_ASSERT(((expected) == (actual)), __LINE__, " Expected Equal") +#define TEST_ASSERT_NOT_EQUAL(expected, actual) UNITY_TEST_ASSERT(((expected) != (actual)), __LINE__, " Expected Not-Equal") +#endif +#ifdef UNITY_SHORTHAND_AS_NONE +#define TEST_ASSERT_EQUAL(expected, actual) UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand) +#define TEST_ASSERT_NOT_EQUAL(expected, actual) UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand) +#endif + +/*------------------------------------------------------- + * Test Asserts (with additional messages) + *-------------------------------------------------------*/ + +/* Boolean */ +#define TEST_ASSERT_MESSAGE(condition, message) UNITY_TEST_ASSERT( (condition), __LINE__, (message)) +#define TEST_ASSERT_TRUE_MESSAGE(condition, message) UNITY_TEST_ASSERT( (condition), __LINE__, (message)) +#define TEST_ASSERT_UNLESS_MESSAGE(condition, message) UNITY_TEST_ASSERT( !(condition), __LINE__, (message)) +#define TEST_ASSERT_FALSE_MESSAGE(condition, message) UNITY_TEST_ASSERT( !(condition), __LINE__, (message)) +#define TEST_ASSERT_NULL_MESSAGE(pointer, message) UNITY_TEST_ASSERT_NULL( (pointer), __LINE__, (message)) +#define TEST_ASSERT_NOT_NULL_MESSAGE(pointer, message) UNITY_TEST_ASSERT_NOT_NULL((pointer), __LINE__, (message)) +#define TEST_ASSERT_EMPTY_MESSAGE(pointer, message) UNITY_TEST_ASSERT_EMPTY( (pointer), __LINE__, (message)) +#define TEST_ASSERT_NOT_EMPTY_MESSAGE(pointer, message) UNITY_TEST_ASSERT_NOT_EMPTY((pointer), __LINE__, (message)) + +/* Integers (of all sizes) */ +#define TEST_ASSERT_EQUAL_INT_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_INT8_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_INT8((expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_INT16_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_INT16((expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_INT32_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_INT32((expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_INT64_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_INT64((expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_UINT_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_UINT( (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_UINT8_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_UINT8( (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_UINT16_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_UINT16( (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_UINT32_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_UINT32( (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_UINT64_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_UINT64( (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_size_t_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_UINT( (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_HEX_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_HEX32((expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_HEX8_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_HEX8( (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_HEX16_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_HEX16((expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_HEX32_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_HEX32((expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_HEX64_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_HEX64((expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_BITS_MESSAGE(mask, expected, actual, message) UNITY_TEST_ASSERT_BITS((mask), (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_BITS_HIGH_MESSAGE(mask, actual, message) UNITY_TEST_ASSERT_BITS((mask), (UNITY_UINT32)(-1), (actual), __LINE__, (message)) +#define TEST_ASSERT_BITS_LOW_MESSAGE(mask, actual, message) UNITY_TEST_ASSERT_BITS((mask), (UNITY_UINT32)(0), (actual), __LINE__, (message)) +#define TEST_ASSERT_BIT_HIGH_MESSAGE(bit, actual, message) UNITY_TEST_ASSERT_BITS(((UNITY_UINT32)1 << (bit)), (UNITY_UINT32)(-1), (actual), __LINE__, (message)) +#define TEST_ASSERT_BIT_LOW_MESSAGE(bit, actual, message) UNITY_TEST_ASSERT_BITS(((UNITY_UINT32)1 << (bit)), (UNITY_UINT32)(0), (actual), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_CHAR_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_CHAR((expected), (actual), __LINE__, (message)) + +/* Integer Not Equal To (of all sizes) */ +#define TEST_ASSERT_NOT_EQUAL_INT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_INT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_NOT_EQUAL_INT8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_INT8((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_NOT_EQUAL_INT16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_INT16((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_NOT_EQUAL_INT32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_INT32((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_NOT_EQUAL_INT64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_INT64((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_NOT_EQUAL_UINT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_UINT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_NOT_EQUAL_UINT8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_UINT8((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_NOT_EQUAL_UINT16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_UINT16((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_NOT_EQUAL_UINT32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_UINT32((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_NOT_EQUAL_UINT64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_UINT64((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_NOT_EQUAL_size_t_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_UINT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_NOT_EQUAL_HEX8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_HEX8((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_NOT_EQUAL_HEX16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_HEX16((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_NOT_EQUAL_HEX32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_HEX32((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_NOT_EQUAL_HEX64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_HEX64((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_NOT_EQUAL_CHAR_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_CHAR((threshold), (actual), __LINE__, (message)) + + +/* Integer Greater Than/ Less Than (of all sizes) */ +#define TEST_ASSERT_GREATER_THAN_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_INT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_THAN_INT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_INT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_THAN_INT8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_INT8((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_THAN_INT16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_INT16((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_THAN_INT32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_INT32((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_THAN_INT64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_INT64((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_THAN_UINT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_UINT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_THAN_UINT8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_UINT8((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_THAN_UINT16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_UINT16((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_THAN_UINT32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_UINT32((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_THAN_UINT64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_UINT64((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_THAN_size_t_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_UINT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_THAN_HEX8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_HEX8((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_THAN_HEX16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_HEX16((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_THAN_HEX32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_HEX32((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_THAN_HEX64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_HEX64((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_THAN_CHAR_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_CHAR((threshold), (actual), __LINE__, (message)) + +#define TEST_ASSERT_LESS_THAN_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_INT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_THAN_INT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_INT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_THAN_INT8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_INT8((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_THAN_INT16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_INT16((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_THAN_INT32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_INT32((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_THAN_INT64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_INT64((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_THAN_UINT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_UINT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_THAN_UINT8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_UINT8((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_THAN_UINT16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_UINT16((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_THAN_UINT32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_UINT32((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_THAN_UINT64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_UINT64((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_THAN_size_t_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_UINT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_THAN_HEX8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_HEX8((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_THAN_HEX16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_HEX16((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_THAN_HEX32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_HEX32((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_THAN_HEX64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_HEX64((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_THAN_CHAR_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_THAN_CHAR((threshold), (actual), __LINE__, (message)) + +#define TEST_ASSERT_GREATER_OR_EQUAL_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_OR_EQUAL_INT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_OR_EQUAL_INT8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT8((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_OR_EQUAL_INT16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT16((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_OR_EQUAL_INT32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT32((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_OR_EQUAL_INT64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT64((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_OR_EQUAL_UINT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_OR_EQUAL_UINT8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT8((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_OR_EQUAL_UINT16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT16((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_OR_EQUAL_UINT32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT32((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_OR_EQUAL_UINT64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT64((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_OR_EQUAL_size_t_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_OR_EQUAL_HEX8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX8((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_OR_EQUAL_HEX16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX16((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_OR_EQUAL_HEX32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX32((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_OR_EQUAL_HEX64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX64((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_OR_EQUAL_CHAR_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_CHAR((threshold), (actual), __LINE__, (message)) + +#define TEST_ASSERT_LESS_OR_EQUAL_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_OR_EQUAL_INT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_OR_EQUAL_INT8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT8((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_OR_EQUAL_INT16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT16((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_OR_EQUAL_INT32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT32((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_OR_EQUAL_INT64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT64((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_OR_EQUAL_UINT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_OR_EQUAL_UINT8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT8((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_OR_EQUAL_UINT16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT16((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_OR_EQUAL_UINT32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT32((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_OR_EQUAL_UINT64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT64((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_OR_EQUAL_size_t_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_OR_EQUAL_HEX8_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX8((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_OR_EQUAL_HEX16_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX16((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_OR_EQUAL_HEX32_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX32((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_OR_EQUAL_HEX64_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX64((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_OR_EQUAL_CHAR_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_CHAR((threshold), (actual), __LINE__, (message)) + +/* Integer Ranges (of all sizes) */ +#define TEST_ASSERT_INT_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_INT_WITHIN((delta), (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_INT8_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_INT8_WITHIN((delta), (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_INT16_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_INT16_WITHIN((delta), (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_INT32_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_INT32_WITHIN((delta), (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_INT64_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_INT64_WITHIN((delta), (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_UINT_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_UINT_WITHIN((delta), (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_UINT8_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_UINT8_WITHIN((delta), (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_UINT16_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_UINT16_WITHIN((delta), (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_UINT32_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_UINT32_WITHIN((delta), (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_UINT64_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_UINT64_WITHIN((delta), (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_size_t_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_UINT_WITHIN((delta), (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_HEX_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_HEX32_WITHIN((delta), (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_HEX8_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_HEX8_WITHIN((delta), (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_HEX16_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_HEX16_WITHIN((delta), (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_HEX32_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_HEX32_WITHIN((delta), (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_HEX64_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_HEX64_WITHIN((delta), (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_CHAR_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_CHAR_WITHIN((delta), (expected), (actual), __LINE__, (message)) + +/* Integer Array Ranges (of all sizes) */ +#define TEST_ASSERT_INT_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_INT_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message)) +#define TEST_ASSERT_INT8_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_INT8_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message)) +#define TEST_ASSERT_INT16_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_INT16_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message)) +#define TEST_ASSERT_INT32_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_INT32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message)) +#define TEST_ASSERT_INT64_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_INT64_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message)) +#define TEST_ASSERT_UINT_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_UINT_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message)) +#define TEST_ASSERT_UINT8_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_UINT8_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message)) +#define TEST_ASSERT_UINT16_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_UINT16_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message)) +#define TEST_ASSERT_UINT32_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_UINT32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message)) +#define TEST_ASSERT_UINT64_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_UINT64_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message)) +#define TEST_ASSERT_size_t_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_UINT_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message)) +#define TEST_ASSERT_HEX_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_HEX32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message)) +#define TEST_ASSERT_HEX8_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_HEX8_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message)) +#define TEST_ASSERT_HEX16_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_HEX16_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message)) +#define TEST_ASSERT_HEX32_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_HEX32_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message)) +#define TEST_ASSERT_HEX64_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_HEX64_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message)) +#define TEST_ASSERT_CHAR_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_CHAR_ARRAY_WITHIN((delta), (expected), (actual), num_elements, __LINE__, (message)) + + +/* Structs and Strings */ +#define TEST_ASSERT_EQUAL_PTR_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_PTR((expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_STRING_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_STRING((expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_STRING_LEN_MESSAGE(expected, actual, len, message) UNITY_TEST_ASSERT_EQUAL_STRING_LEN((expected), (actual), (len), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_MEMORY_MESSAGE(expected, actual, len, message) UNITY_TEST_ASSERT_EQUAL_MEMORY((expected), (actual), (len), __LINE__, (message)) + +/* Arrays */ +#define TEST_ASSERT_EQUAL_INT_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_INT_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_INT8_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_INT8_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_INT16_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_INT16_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_INT32_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_INT32_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_INT64_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_UINT_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_UINT8_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_UINT8_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_UINT16_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_UINT16_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_UINT32_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_UINT32_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_UINT64_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_size_t_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_HEX_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_HEX8_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_HEX8_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_HEX16_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_HEX16_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_HEX32_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_HEX64_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_PTR_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_PTR_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_STRING_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_STRING_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_MEMORY_ARRAY_MESSAGE(expected, actual, len, num_elements, message) UNITY_TEST_ASSERT_EQUAL_MEMORY_ARRAY((expected), (actual), (len), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_CHAR_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_CHAR_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) + +/* Arrays Compared To Single Value*/ +#define TEST_ASSERT_EACH_EQUAL_INT_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_INT((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_INT8_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_INT8((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_INT16_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_INT16((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_INT32_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_INT32((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_INT64_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_INT64((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_UINT_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_UINT((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_UINT8_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_UINT8((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_UINT16_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_UINT16((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_UINT32_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_UINT32((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_UINT64_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_UINT64((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_size_t_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_UINT((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_HEX_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_HEX32((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_HEX8_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_HEX8((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_HEX16_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_HEX16((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_HEX32_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_HEX32((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_HEX64_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_HEX64((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_PTR_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_PTR((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_STRING_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_STRING((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_MEMORY_MESSAGE(expected, actual, len, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_MEMORY((expected), (actual), (len), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_CHAR_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_CHAR((expected), (actual), (num_elements), __LINE__, (message)) + +/* Floating Point (If Enabled) */ +#define TEST_ASSERT_FLOAT_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_FLOAT_WITHIN((delta), (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_FLOAT_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_FLOAT((expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_NOT_EQUAL_FLOAT_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_FLOAT((expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_FLOAT_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_FLOAT_ARRAY_WITHIN((delta), (expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_FLOAT_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_FLOAT_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_FLOAT((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_GREATER_THAN_FLOAT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_FLOAT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_OR_EQUAL_FLOAT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_FLOAT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_THAN_FLOAT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_LESS_THAN_FLOAT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_OR_EQUAL_FLOAT_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_LESS_OR_EQUAL_FLOAT((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_FLOAT_IS_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_INF((actual), __LINE__, (message)) +#define TEST_ASSERT_FLOAT_IS_NEG_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF((actual), __LINE__, (message)) +#define TEST_ASSERT_FLOAT_IS_NAN_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_NAN((actual), __LINE__, (message)) +#define TEST_ASSERT_FLOAT_IS_DETERMINATE_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_DETERMINATE((actual), __LINE__, (message)) +#define TEST_ASSERT_FLOAT_IS_NOT_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_NOT_INF((actual), __LINE__, (message)) +#define TEST_ASSERT_FLOAT_IS_NOT_NEG_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_NOT_NEG_INF((actual), __LINE__, (message)) +#define TEST_ASSERT_FLOAT_IS_NOT_NAN_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_NOT_NAN((actual), __LINE__, (message)) +#define TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE_MESSAGE(actual, message) UNITY_TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE((actual), __LINE__, (message)) + +/* Double (If Enabled) */ +#define TEST_ASSERT_DOUBLE_WITHIN_MESSAGE(delta, expected, actual, message) UNITY_TEST_ASSERT_DOUBLE_WITHIN((delta), (expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_DOUBLE_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_DOUBLE((expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_NOT_EQUAL_DOUBLE_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_NOT_EQUAL_DOUBLE((expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_DOUBLE_ARRAY_WITHIN_MESSAGE(delta, expected, actual, num_elements, message) UNITY_TEST_ASSERT_DOUBLE_ARRAY_WITHIN((delta), (expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EQUAL_DOUBLE_ARRAY_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_EACH_EQUAL_DOUBLE_MESSAGE(expected, actual, num_elements, message) UNITY_TEST_ASSERT_EACH_EQUAL_DOUBLE((expected), (actual), (num_elements), __LINE__, (message)) +#define TEST_ASSERT_GREATER_THAN_DOUBLE_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_THAN_DOUBLE((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_GREATER_OR_EQUAL_DOUBLE_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_GREATER_OR_EQUAL_DOUBLE((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_THAN_DOUBLE_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_LESS_THAN_DOUBLE((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_LESS_OR_EQUAL_DOUBLE_MESSAGE(threshold, actual, message) UNITY_TEST_ASSERT_LESS_OR_EQUAL_DOUBLE((threshold), (actual), __LINE__, (message)) +#define TEST_ASSERT_DOUBLE_IS_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_INF((actual), __LINE__, (message)) +#define TEST_ASSERT_DOUBLE_IS_NEG_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF((actual), __LINE__, (message)) +#define TEST_ASSERT_DOUBLE_IS_NAN_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_NAN((actual), __LINE__, (message)) +#define TEST_ASSERT_DOUBLE_IS_DETERMINATE_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_DETERMINATE((actual), __LINE__, (message)) +#define TEST_ASSERT_DOUBLE_IS_NOT_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_NOT_INF((actual), __LINE__, (message)) +#define TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF((actual), __LINE__, (message)) +#define TEST_ASSERT_DOUBLE_IS_NOT_NAN_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NAN((actual), __LINE__, (message)) +#define TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE_MESSAGE(actual, message) UNITY_TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE((actual), __LINE__, (message)) + +/* Shorthand */ +#ifdef UNITY_SHORTHAND_AS_OLD +#define TEST_ASSERT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, (message)) +#define TEST_ASSERT_NOT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT(((expected) != (actual)), __LINE__, (message)) +#endif +#ifdef UNITY_SHORTHAND_AS_INT +#define TEST_ASSERT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_INT((expected), (actual), __LINE__, message) +#define TEST_ASSERT_NOT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand) +#endif +#ifdef UNITY_SHORTHAND_AS_MEM +#define TEST_ASSERT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT_EQUAL_MEMORY((&expected), (&actual), sizeof(expected), __LINE__, message) +#define TEST_ASSERT_NOT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand) +#endif +#ifdef UNITY_SHORTHAND_AS_RAW +#define TEST_ASSERT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT(((expected) == (actual)), __LINE__, message) +#define TEST_ASSERT_NOT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_ASSERT(((expected) != (actual)), __LINE__, message) +#endif +#ifdef UNITY_SHORTHAND_AS_NONE +#define TEST_ASSERT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand) +#define TEST_ASSERT_NOT_EQUAL_MESSAGE(expected, actual, message) UNITY_TEST_FAIL(__LINE__, UnityStrErrShorthand) +#endif + +/* end of UNITY_FRAMEWORK_H */ +#ifdef __cplusplus +} +#endif +#endif diff --git a/tests/vendor/unity/unity_internals.h b/tests/vendor/unity/unity_internals.h new file mode 100644 index 0000000..e8a26ad --- /dev/null +++ b/tests/vendor/unity/unity_internals.h @@ -0,0 +1,1283 @@ +/* ========================================================================= + Unity - A Test Framework for C + ThrowTheSwitch.org + Copyright (c) 2007-26 Mike Karlesky, Mark VanderVoord, & Greg Williams + SPDX-License-Identifier: MIT +========================================================================= */ + +#ifndef UNITY_INTERNALS_H +#define UNITY_INTERNALS_H + +#ifdef UNITY_INCLUDE_CONFIG_H +#include "unity_config.h" +#endif + +#ifndef UNITY_EXCLUDE_SETJMP_H +#include +#endif + +#ifndef UNITY_EXCLUDE_MATH_H +#include +#endif + +#ifndef UNITY_EXCLUDE_STDDEF_H +#include +#endif + +#ifdef UNITY_INCLUDE_PRINT_FORMATTED +#include +#endif + +/* Unity Attempts to Auto-Detect Integer Types + * Attempt 1: UINT_MAX, ULONG_MAX in , or default to 32 bits + * Attempt 2: UINTPTR_MAX in , or default to same size as long + * The user may override any of these derived constants: + * UNITY_INT_WIDTH, UNITY_LONG_WIDTH, UNITY_POINTER_WIDTH */ +#ifndef UNITY_EXCLUDE_STDINT_H +#include +#endif + +#ifndef UNITY_EXCLUDE_LIMITS_H +#include +#endif + +#if defined(__GNUC__) || defined(__clang__) + #define UNITY_FUNCTION_ATTR(a) __attribute__((a)) +#else + #define UNITY_FUNCTION_ATTR(a) /* ignore */ +#endif + +/* UNITY_NORETURN is only required if we have setjmp.h. */ +#ifndef UNITY_EXCLUDE_SETJMP_H + #ifndef UNITY_NORETURN + #if defined(__cplusplus) + #if __cplusplus >= 201103L + #define UNITY_NORETURN [[ noreturn ]] + #endif + #elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && __STDC_VERSION__ < 202311L + /* _Noreturn keyword is used from C11 but deprecated in C23. */ + #if defined(_WIN32) && defined(_MSC_VER) + /* We are using MSVC compiler on Windows platform. */ + /* Not all Windows SDKs supports , but compiler can support C11: */ + /* https://devblogs.microsoft.com/cppblog/c11-and-c17-standard-support-arriving-in-msvc/ */ + /* Not sure, that Mingw compilers has Windows SDK headers at all. */ + #include + #endif + + /* Using Windows SDK predefined macro for detecting supported SDK with MSVC compiler. */ + /* Mingw GCC should work without that fixes. */ + /* Based on: */ + /* https://docs.microsoft.com/en-us/cpp/porting/modifying-winver-and-win32-winnt?view=msvc-170 */ + /* NTDDI_WIN10_FE is equal to Windows 10 SDK 2104 */ + #if defined(_MSC_VER) && ((!defined(NTDDI_WIN10_FE)) || WDK_NTDDI_VERSION < NTDDI_WIN10_FE) + /* Based on tests and: */ + /* https://docs.microsoft.com/en-us/cpp/c-language/noreturn?view=msvc-170 */ + /* https://en.cppreference.com/w/c/language/_Noreturn */ + #define UNITY_NORETURN _Noreturn + #else /* Using newer Windows SDK or not MSVC compiler */ + #if defined(__GNUC__) + /* The header collides with __attribute(noreturn)__ from GCC. */ + #define UNITY_NORETURN _Noreturn + #else + #include + #define UNITY_NORETURN noreturn + #endif + #endif + #elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L + /* Since C23, the keyword _Noreturn has been replaced by the attribute noreturn, based on: */ + /* https://en.cppreference.com/w/c/language/attributes/noreturn */ + #define UNITY_NORETURN [[ noreturn ]] + #elif defined(__IAR_SYSTEMS_ICC__) && (__IAR_SYSTEMS_ICC__ >= 8) + /* For IAR compilers supporting at least C99 use the IAR specific '__noreturn' keyword */ + /* Based on tests and: */ + /* https://wwwfiles.iar.com/arm/webic/doc/EWARM_DevelopmentGuide.ENU.pdf */ + /* https://wwwfiles.iar.com/AVR/webic/doc/EWAVR_CompilerGuide.pdf */ + /* https://wwwfiles.iar.com/msp430/webic/doc/EW430_CompilerReference.pdf */ + #define UNITY_NORETURN __noreturn + #endif + #endif + #ifndef UNITY_NORETURN + #define UNITY_NORETURN UNITY_FUNCTION_ATTR(__noreturn__) + #endif +#endif + +/*------------------------------------------------------- + * Guess Widths If Not Specified + *-------------------------------------------------------*/ + +/* Determine the size of an int, if not already specified. + * We cannot use sizeof(int), because it is not yet defined + * at this stage in the translation of the C program. + * Also sizeof(int) does return the size in addressable units on all platforms, + * which may not necessarily be the size in bytes. + * Therefore, infer it from UINT_MAX if possible. */ +#ifndef UNITY_INT_WIDTH + #ifdef UINT_MAX + #if (UINT_MAX == 0xFFFF) + #define UNITY_INT_WIDTH (16) + #elif (UINT_MAX == 0xFFFFFFFF) + #define UNITY_INT_WIDTH (32) + #elif (UINT_MAX == 0xFFFFFFFFFFFFFFFF) + #define UNITY_INT_WIDTH (64) + #endif + #else /* Set to default */ + #define UNITY_INT_WIDTH (32) + #endif /* UINT_MAX */ +#endif + +/* Determine the size of a long, if not already specified. */ +#ifndef UNITY_LONG_WIDTH + #ifdef ULONG_MAX + #if (ULONG_MAX == 0xFFFF) + #define UNITY_LONG_WIDTH (16) + #elif (ULONG_MAX == 0xFFFFFFFF) + #define UNITY_LONG_WIDTH (32) + #elif (ULONG_MAX == 0xFFFFFFFFFFFFFFFF) + #define UNITY_LONG_WIDTH (64) + #endif + #else /* Set to default */ + #define UNITY_LONG_WIDTH (32) + #endif /* ULONG_MAX */ +#endif + +/* Determine the size of a pointer, if not already specified. */ +#ifndef UNITY_POINTER_WIDTH + #ifdef UINTPTR_MAX + #if (UINTPTR_MAX <= 0xFFFF) + #define UNITY_POINTER_WIDTH (16) + #elif (UINTPTR_MAX <= 0xFFFFFFFF) + #define UNITY_POINTER_WIDTH (32) + #elif (UINTPTR_MAX <= 0xFFFFFFFFFFFFFFFF) + #define UNITY_POINTER_WIDTH (64) + #endif + #else /* Set to default */ + #define UNITY_POINTER_WIDTH UNITY_LONG_WIDTH + #endif /* UINTPTR_MAX */ +#endif + +/*------------------------------------------------------- + * Int Support (Define types based on detected sizes) + *-------------------------------------------------------*/ + +#if (UNITY_INT_WIDTH == 32) + typedef unsigned char UNITY_UINT8; + typedef unsigned short UNITY_UINT16; + typedef unsigned int UNITY_UINT32; + typedef signed char UNITY_INT8; + typedef signed short UNITY_INT16; + typedef signed int UNITY_INT32; +#elif (UNITY_INT_WIDTH == 16) + typedef unsigned char UNITY_UINT8; + typedef unsigned int UNITY_UINT16; + typedef unsigned long UNITY_UINT32; + typedef signed char UNITY_INT8; + typedef signed int UNITY_INT16; + typedef signed long UNITY_INT32; +#else + #error Invalid UNITY_INT_WIDTH specified! (16 or 32 are supported) +#endif + +/*------------------------------------------------------- + * 64-bit Support + *-------------------------------------------------------*/ + +/* Auto-detect 64 Bit Support */ +#ifndef UNITY_SUPPORT_64 + #if UNITY_LONG_WIDTH == 64 || UNITY_POINTER_WIDTH == 64 + #define UNITY_SUPPORT_64 + #endif +#endif + +/* 64-Bit Support Dependent Configuration */ +#ifndef UNITY_SUPPORT_64 + /* No 64-bit Support */ + typedef UNITY_UINT32 UNITY_UINT; + typedef UNITY_INT32 UNITY_INT; + #define UNITY_MAX_NIBBLES (8) /* Maximum number of nibbles in a UNITY_(U)INT */ +#else + /* 64-bit Support */ + #if (UNITY_LONG_WIDTH == 32) + typedef unsigned long long UNITY_UINT64; + typedef signed long long UNITY_INT64; + #elif (UNITY_LONG_WIDTH == 64) + typedef unsigned long UNITY_UINT64; + typedef signed long UNITY_INT64; + #else + #error Invalid UNITY_LONG_WIDTH specified! (32 or 64 are supported) + #endif + typedef UNITY_UINT64 UNITY_UINT; + typedef UNITY_INT64 UNITY_INT; + #define UNITY_MAX_NIBBLES (16) /* Maximum number of nibbles in a UNITY_(U)INT */ +#endif + +/*------------------------------------------------------- + * Pointer Support + *-------------------------------------------------------*/ + +#if (UNITY_POINTER_WIDTH == 32) + #define UNITY_PTR_TO_INT UNITY_INT32 + #define UNITY_DISPLAY_STYLE_POINTER UNITY_DISPLAY_STYLE_HEX32 +#elif (UNITY_POINTER_WIDTH == 64) + #define UNITY_PTR_TO_INT UNITY_INT64 + #define UNITY_DISPLAY_STYLE_POINTER UNITY_DISPLAY_STYLE_HEX64 +#elif (UNITY_POINTER_WIDTH == 16) + #define UNITY_PTR_TO_INT UNITY_INT16 + #define UNITY_DISPLAY_STYLE_POINTER UNITY_DISPLAY_STYLE_HEX16 +#else + #error Invalid UNITY_POINTER_WIDTH specified! (16, 32 or 64 are supported) +#endif + +#ifndef UNITY_PTR_ATTRIBUTE + #define UNITY_PTR_ATTRIBUTE +#endif + +#ifndef UNITY_INTERNAL_PTR + #define UNITY_INTERNAL_PTR UNITY_PTR_ATTRIBUTE const void* +#endif + +/* optionally define UNITY_COMPARE_PTRS_ON_ZERO_ARRAY */ + +/*------------------------------------------------------- + * Float Support + *-------------------------------------------------------*/ + +#ifdef UNITY_EXCLUDE_FLOAT + +/* No Floating Point Support */ +#ifndef UNITY_EXCLUDE_DOUBLE +#define UNITY_EXCLUDE_DOUBLE /* Remove double when excluding float support */ +#endif +#ifndef UNITY_EXCLUDE_FLOAT_PRINT +#define UNITY_EXCLUDE_FLOAT_PRINT +#endif + +#else + +/* Floating Point Support */ +#ifndef UNITY_FLOAT_PRECISION +#define UNITY_FLOAT_PRECISION (0.00001f) +#endif +#ifndef UNITY_FLOAT_TYPE +#define UNITY_FLOAT_TYPE float +#endif +typedef UNITY_FLOAT_TYPE UNITY_FLOAT; + +/* isnan macro should be provided by math.h. Override if not macro */ +#ifndef UNITY_IS_NAN +#ifndef isnan +/* NaN is the only floating point value that does NOT equal itself. + * Therefore if n != n, then it is NaN. */ +#define UNITY_IS_NAN(n) ((n != n) ? 1 : 0) +#else +#define UNITY_IS_NAN(n) isnan(n) +#endif +#endif + +/* isinf macro should be provided by math.h. Override if not macro */ +#ifndef UNITY_IS_INF +#ifndef isinf +/* The value of Inf - Inf is NaN */ +#define UNITY_IS_INF(n) (UNITY_IS_NAN((n) - (n)) && !UNITY_IS_NAN(n)) +#else +#define UNITY_IS_INF(n) isinf(n) +#endif +#endif + +#endif + +/*------------------------------------------------------- + * Double Float Support + *-------------------------------------------------------*/ + +/* unlike float, we DON'T include by default */ +#if defined(UNITY_EXCLUDE_DOUBLE) || !defined(UNITY_INCLUDE_DOUBLE) + + /* No Floating Point Support */ + #ifndef UNITY_EXCLUDE_DOUBLE + #define UNITY_EXCLUDE_DOUBLE + #else + #undef UNITY_INCLUDE_DOUBLE + #endif + + #ifndef UNITY_EXCLUDE_FLOAT + #ifndef UNITY_DOUBLE_TYPE + #define UNITY_DOUBLE_TYPE double + #endif + typedef UNITY_FLOAT UNITY_DOUBLE; + /* For parameter in UnityPrintFloat(UNITY_DOUBLE), which aliases to double or float */ + #endif + +#else + + /* Double Floating Point Support */ + #ifndef UNITY_DOUBLE_PRECISION + #define UNITY_DOUBLE_PRECISION (1e-12) + #endif + + #ifndef UNITY_DOUBLE_TYPE + #define UNITY_DOUBLE_TYPE double + #endif + typedef UNITY_DOUBLE_TYPE UNITY_DOUBLE; + +#endif + +/*------------------------------------------------------- + * Output Method: stdout (DEFAULT) + *-------------------------------------------------------*/ +#ifndef UNITY_OUTPUT_CHAR + /* Default to using putchar, which is defined in stdio.h */ + #include + #define UNITY_OUTPUT_CHAR(a) (void)putchar(a) +#else + /* If defined as something else, make sure we declare it here so it's ready for use */ + #ifdef UNITY_OUTPUT_CHAR_HEADER_DECLARATION + extern void UNITY_OUTPUT_CHAR_HEADER_DECLARATION; + #endif +#endif + +#ifndef UNITY_OUTPUT_FLUSH + #ifdef UNITY_USE_FLUSH_STDOUT + /* We want to use the stdout flush utility */ + #include + #define UNITY_OUTPUT_FLUSH() (void)fflush(stdout) + #else + /* We've specified nothing, therefore flush should just be ignored */ + #define UNITY_OUTPUT_FLUSH() (void)0 + #endif +#else + /* If defined as something else, make sure we declare it here so it's ready for use */ + #ifdef UNITY_OUTPUT_FLUSH_HEADER_DECLARATION + extern void UNITY_OUTPUT_FLUSH_HEADER_DECLARATION; + #endif +#endif + +#ifndef UNITY_OUTPUT_FLUSH +#define UNITY_FLUSH_CALL() +#else +#define UNITY_FLUSH_CALL() UNITY_OUTPUT_FLUSH() +#endif + +#ifndef UNITY_PRINT_EOL +#define UNITY_PRINT_EOL() UNITY_OUTPUT_CHAR('\n') +#endif + +#ifndef UNITY_OUTPUT_START +#define UNITY_OUTPUT_START() +#endif + +#ifndef UNITY_OUTPUT_COMPLETE +#define UNITY_OUTPUT_COMPLETE() +#endif + +#ifdef UNITY_INCLUDE_EXEC_TIME + #if !defined(UNITY_EXEC_TIME_START) && \ + !defined(UNITY_EXEC_TIME_STOP) && \ + !defined(UNITY_PRINT_EXEC_TIME) && \ + !defined(UNITY_TIME_TYPE) + /* If none any of these macros are defined then try to provide a default implementation */ + + #if defined(UNITY_CLOCK_MS) + /* This is a simple way to get a default implementation on platforms that support getting a millisecond counter */ + #define UNITY_TIME_TYPE UNITY_UINT + #define UNITY_EXEC_TIME_START() Unity.CurrentTestStartTime = UNITY_CLOCK_MS() + #define UNITY_EXEC_TIME_STOP() Unity.CurrentTestStopTime = UNITY_CLOCK_MS() + #define UNITY_PRINT_EXEC_TIME() { \ + UNITY_UINT execTimeMs = (Unity.CurrentTestStopTime - Unity.CurrentTestStartTime); \ + UnityPrint(" ("); \ + UnityPrintNumberUnsigned(execTimeMs); \ + UnityPrint(" ms)"); \ + } + #elif defined(_WIN32) + #include + #define UNITY_TIME_TYPE clock_t + #define UNITY_GET_TIME(t) t = (clock_t)((clock() * 1000) / CLOCKS_PER_SEC) + #define UNITY_EXEC_TIME_START() UNITY_GET_TIME(Unity.CurrentTestStartTime) + #define UNITY_EXEC_TIME_STOP() UNITY_GET_TIME(Unity.CurrentTestStopTime) + #define UNITY_PRINT_EXEC_TIME() { \ + UNITY_UINT execTimeMs = (Unity.CurrentTestStopTime - Unity.CurrentTestStartTime); \ + UnityPrint(" ("); \ + UnityPrintNumberUnsigned(execTimeMs); \ + UnityPrint(" ms)"); \ + } + #elif defined(__unix__) || defined(__APPLE__) + #include + #define UNITY_TIME_TYPE struct timespec + #define UNITY_GET_TIME(t) clock_gettime(CLOCK_MONOTONIC, &t) + #define UNITY_EXEC_TIME_START() UNITY_GET_TIME(Unity.CurrentTestStartTime) + #define UNITY_EXEC_TIME_STOP() UNITY_GET_TIME(Unity.CurrentTestStopTime) + #define UNITY_PRINT_EXEC_TIME() { \ + UNITY_UINT execTimeMs = ((Unity.CurrentTestStopTime.tv_sec - Unity.CurrentTestStartTime.tv_sec) * 1000L); \ + execTimeMs += ((Unity.CurrentTestStopTime.tv_nsec - Unity.CurrentTestStartTime.tv_nsec) / 1000000L); \ + UnityPrint(" ("); \ + UnityPrintNumberUnsigned(execTimeMs); \ + UnityPrint(" ms)"); \ + } + #endif + #endif +#endif + +#ifndef UNITY_EXEC_TIME_START +#define UNITY_EXEC_TIME_START() do { /* nothing*/ } while (0) +#endif + +#ifndef UNITY_EXEC_TIME_STOP +#define UNITY_EXEC_TIME_STOP() do { /* nothing*/ } while (0) +#endif + +#ifndef UNITY_TIME_TYPE +#define UNITY_TIME_TYPE UNITY_UINT +#endif + +#ifndef UNITY_PRINT_EXEC_TIME +#define UNITY_PRINT_EXEC_TIME() do { /* nothing*/ } while (0) +#endif + +#ifndef UNITY_FAILURE_DETAIL_SEPARATOR +#define UNITY_FAILURE_DETAIL_SEPARATOR ":" +#endif + +/*------------------------------------------------------- + * Footprint + *-------------------------------------------------------*/ + +#ifndef UNITY_LINE_TYPE +#define UNITY_LINE_TYPE UNITY_UINT +#endif + +#ifndef UNITY_COUNTER_TYPE +#define UNITY_COUNTER_TYPE UNITY_UINT +#endif + +/*------------------------------------------------------- + * Internal Types Needed + *-------------------------------------------------------*/ + +typedef void (*UnityTestFunction)(void); + +#define UNITY_DISPLAY_RANGE_INT (0x10) +#define UNITY_DISPLAY_RANGE_UINT (0x20) +#define UNITY_DISPLAY_RANGE_HEX (0x40) +#define UNITY_DISPLAY_RANGE_CHAR (0x80) + +typedef enum +{ + UNITY_DISPLAY_STYLE_INT = (UNITY_INT_WIDTH / 8) + UNITY_DISPLAY_RANGE_INT, + UNITY_DISPLAY_STYLE_INT8 = 1 + UNITY_DISPLAY_RANGE_INT, + UNITY_DISPLAY_STYLE_INT16 = 2 + UNITY_DISPLAY_RANGE_INT, + UNITY_DISPLAY_STYLE_INT32 = 4 + UNITY_DISPLAY_RANGE_INT, +#ifdef UNITY_SUPPORT_64 + UNITY_DISPLAY_STYLE_INT64 = 8 + UNITY_DISPLAY_RANGE_INT, +#endif + + UNITY_DISPLAY_STYLE_UINT = (UNITY_INT_WIDTH / 8) + UNITY_DISPLAY_RANGE_UINT, + UNITY_DISPLAY_STYLE_UINT8 = 1 + UNITY_DISPLAY_RANGE_UINT, + UNITY_DISPLAY_STYLE_UINT16 = 2 + UNITY_DISPLAY_RANGE_UINT, + UNITY_DISPLAY_STYLE_UINT32 = 4 + UNITY_DISPLAY_RANGE_UINT, +#ifdef UNITY_SUPPORT_64 + UNITY_DISPLAY_STYLE_UINT64 = 8 + UNITY_DISPLAY_RANGE_UINT, +#endif + + UNITY_DISPLAY_STYLE_HEX8 = 1 + UNITY_DISPLAY_RANGE_HEX, + UNITY_DISPLAY_STYLE_HEX16 = 2 + UNITY_DISPLAY_RANGE_HEX, + UNITY_DISPLAY_STYLE_HEX32 = 4 + UNITY_DISPLAY_RANGE_HEX, +#ifdef UNITY_SUPPORT_64 + UNITY_DISPLAY_STYLE_HEX64 = 8 + UNITY_DISPLAY_RANGE_HEX, +#endif + + UNITY_DISPLAY_STYLE_CHAR = 1 + UNITY_DISPLAY_RANGE_CHAR + UNITY_DISPLAY_RANGE_INT, + + UNITY_DISPLAY_STYLE_UNKNOWN +} UNITY_DISPLAY_STYLE_T; + +typedef enum +{ + UNITY_EQUAL_TO = 0x1, + UNITY_GREATER_THAN = 0x2, + UNITY_GREATER_OR_EQUAL = 0x2 + UNITY_EQUAL_TO, + UNITY_SMALLER_THAN = 0x4, + UNITY_SMALLER_OR_EQUAL = 0x4 + UNITY_EQUAL_TO, + UNITY_NOT_EQUAL = 0x8 +} UNITY_COMPARISON_T; + +#ifndef UNITY_EXCLUDE_FLOAT +typedef enum UNITY_FLOAT_TRAIT +{ + UNITY_FLOAT_IS_NOT_INF = 0, + UNITY_FLOAT_IS_INF, + UNITY_FLOAT_IS_NOT_NEG_INF, + UNITY_FLOAT_IS_NEG_INF, + UNITY_FLOAT_IS_NOT_NAN, + UNITY_FLOAT_IS_NAN, + UNITY_FLOAT_IS_NOT_DET, + UNITY_FLOAT_IS_DET, + UNITY_FLOAT_INVALID_TRAIT +} UNITY_FLOAT_TRAIT_T; +#endif + +typedef enum +{ + UNITY_ARRAY_TO_VAL = 0, + UNITY_ARRAY_TO_ARRAY, + UNITY_ARRAY_UNKNOWN +} UNITY_FLAGS_T; + +#ifndef UNITY_EXCLUDE_DETAILS +#ifdef UNITY_DETAIL_STACK_SIZE +#ifndef UNITY_DETAIL_LABEL_TYPE +#define UNITY_DETAIL_LABEL_TYPE uint8_t +#endif +#ifndef UNITY_DETAIL_VALUE_TYPE +#define UNITY_DETAIL_VALUE_TYPE UNITY_PTR_TO_INT +#endif +#endif +#endif + +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpadded" +#endif +struct UNITY_STORAGE_T +{ + const char* TestFile; + const char* CurrentTestName; +#ifndef UNITY_EXCLUDE_DETAILS +#ifdef UNITY_DETAIL_STACK_SIZE + UNITY_DETAIL_LABEL_TYPE CurrentDetailStackLabels[UNITY_DETAIL_STACK_SIZE]; + UNITY_DETAIL_VALUE_TYPE CurrentDetailStackValues[UNITY_DETAIL_STACK_SIZE]; + UNITY_COUNTER_TYPE CurrentDetailStackSize; +#else + const char* CurrentDetail1; + const char* CurrentDetail2; +#endif +#endif + UNITY_LINE_TYPE CurrentTestLineNumber; + UNITY_COUNTER_TYPE NumberOfTests; + UNITY_COUNTER_TYPE TestFailures; + UNITY_COUNTER_TYPE TestIgnores; + UNITY_COUNTER_TYPE CurrentTestFailed; + UNITY_COUNTER_TYPE CurrentTestIgnored; +#ifdef UNITY_INCLUDE_EXEC_TIME + UNITY_TIME_TYPE CurrentTestStartTime; + UNITY_TIME_TYPE CurrentTestStopTime; +#endif +#ifndef UNITY_EXCLUDE_SETJMP_H + jmp_buf AbortFrame; +#endif +}; +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic pop +#endif + +extern struct UNITY_STORAGE_T Unity; + +/*------------------------------------------------------- + * Test Suite Management + *-------------------------------------------------------*/ + +void UnityBegin(const char* filename); +int UnityEnd(void); +void UnitySetTestFile(const char* filename); +void UnityConcludeTest(void); + +#ifndef RUN_TEST +void UnityDefaultTestRun(UnityTestFunction Func, const char* FuncName, const int FuncLineNum); +#else +#define UNITY_SKIP_DEFAULT_RUNNER +#endif + +/*------------------------------------------------------- + * Details Support + *-------------------------------------------------------*/ + +#ifdef UNITY_EXCLUDE_DETAILS +#define UNITY_CLR_DETAILS() +#define UNITY_SET_DETAIL(d1) +#define UNITY_SET_DETAILS(d1,d2) +#else +#ifndef UNITY_DETAIL1_NAME +#define UNITY_DETAIL1_NAME "Function" +#endif + +#ifndef UNITY_DETAIL2_NAME +#define UNITY_DETAIL2_NAME "Argument" +#endif + +#ifdef UNITY_DETAIL_STACK_SIZE +/* stack based implementation */ +#ifndef UNITY_DETAIL_LABEL_NAMES +/* Note: If the label name string starts with '#', the second byte is interpreted as UNITY_DISPLAY_STYLE_T, + * and the detail value will be printed as number (e.g. "#\x24Line" to output "Line "). + * Otherwise, the detail value must be a pointer to a string that is valid until it is pop'ed. + */ +#define UNITY_DETAIL_LABEL_NAMES {0, UNITY_DETAIL1_NAME, UNITY_DETAIL2_NAME} +typedef enum +{ + UNITY_DETAIL_NONE = 0, + UNITY_DETAIL_D1 = 1, + UNITY_DETAIL_D2 = 2 +} UNITY_DETAIL_LABEL_T; +#endif +void UnityPushDetail(UNITY_DETAIL_LABEL_TYPE label, UNITY_DETAIL_VALUE_TYPE value, const UNITY_LINE_TYPE line); +void UnityPopDetail(UNITY_DETAIL_LABEL_TYPE label, UNITY_DETAIL_VALUE_TYPE value, const UNITY_LINE_TYPE line); + +#define UNITY_CLR_DETAILS() do { \ + if(Unity.CurrentDetailStackSize && \ + Unity.CurrentDetailStackLabels[Unity.CurrentDetailStackSize - 1] == UNITY_DETAIL_D2) { \ + Unity.CurrentDetailStackLabels[--Unity.CurrentDetailStackSize] = UNITY_DETAIL_NONE;} \ + if(Unity.CurrentDetailStackSize && \ + Unity.CurrentDetailStackLabels[Unity.CurrentDetailStackSize - 1] == UNITY_DETAIL_D1) { \ + Unity.CurrentDetailStackLabels[--Unity.CurrentDetailStackSize] = UNITY_DETAIL_NONE;} \ + } while (0) +#define UNITY_SET_DETAIL(d1) do { UNITY_CLR_DETAILS(); \ + UnityPushDetail(UNITY_DETAIL_D1, (UNITY_DETAIL_VALUE_TYPE)(d1), __LINE__); \ + } while (0) +#define UNITY_SET_DETAILS(d1,d2) do { UNITY_CLR_DETAILS(); \ + UnityPushDetail(UNITY_DETAIL_D1, (UNITY_DETAIL_VALUE_TYPE)(d1), __LINE__); \ + UnityPushDetail(UNITY_DETAIL_D2, (UNITY_DETAIL_VALUE_TYPE)(d2), __LINE__); \ + } while (0) + +#else +/* just two hardcoded slots */ +#define UNITY_CLR_DETAILS() do { Unity.CurrentDetail1 = 0; Unity.CurrentDetail2 = 0; } while (0) +#define UNITY_SET_DETAIL(d1) do { Unity.CurrentDetail1 = (d1); Unity.CurrentDetail2 = 0; } while (0) +#define UNITY_SET_DETAILS(d1,d2) do { Unity.CurrentDetail1 = (d1); Unity.CurrentDetail2 = (d2); } while (0) +#endif +#endif + +#ifdef UNITY_PRINT_TEST_CONTEXT +void UNITY_PRINT_TEST_CONTEXT(void); +#endif + +/*------------------------------------------------------- + * Test Output + *-------------------------------------------------------*/ + +void UnityPrint(const char* string); + +#ifdef UNITY_INCLUDE_PRINT_FORMATTED +void UnityPrintF(const UNITY_LINE_TYPE line, const char* format, ...); +#endif + +void UnityPrintLen(const char* string, const UNITY_UINT32 length); +void UnityPrintMask(const UNITY_UINT mask, const UNITY_UINT number); +void UnityPrintIntNumberByStyle(const UNITY_INT number, const UNITY_DISPLAY_STYLE_T style); +void UnityPrintUintNumberByStyle(const UNITY_UINT number, const UNITY_DISPLAY_STYLE_T style); +void UnityPrintNumber(const UNITY_INT number_to_print); +void UnityPrintNumberUnsigned(const UNITY_UINT number); +void UnityPrintNumberHex(const UNITY_UINT number, const char nibbles_to_print); + +#ifndef UNITY_EXCLUDE_FLOAT_PRINT +void UnityPrintFloat(const UNITY_DOUBLE input_number); +#endif + +/*------------------------------------------------------- + * Test Assertion Functions + *------------------------------------------------------- + * Use the macros below this section instead of calling + * these directly. The macros have a consistent naming + * convention and will pull in file and line information + * for you. */ + +void UnityAssertEqualIntNumber(const UNITY_INT expected, + const UNITY_INT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style); + +void UnityAssertEqualUintNumber(const UNITY_UINT expected, + const UNITY_UINT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style); + +void UnityAssertIntGreaterOrLessOrEqualNumber(const UNITY_INT threshold, + const UNITY_INT actual, + const UNITY_COMPARISON_T compare, + const char *msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style); + +void UnityAssertUintGreaterOrLessOrEqualNumber(const UNITY_UINT threshold, + const UNITY_UINT actual, + const UNITY_COMPARISON_T compare, + const char *msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style); + +void UnityAssertEqualIntArray(UNITY_INTERNAL_PTR expected, + UNITY_INTERNAL_PTR actual, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style, + const UNITY_FLAGS_T flags); + +void UnityAssertBits(const UNITY_INT mask, + const UNITY_INT expected, + const UNITY_INT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber); + +void UnityAssertEqualString(const char* expected, + const char* actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber); + +void UnityAssertEqualStringLen(const char* expected, + const char* actual, + const UNITY_UINT32 length, + const char* msg, + const UNITY_LINE_TYPE lineNumber); + +void UnityAssertEqualStringArray( UNITY_INTERNAL_PTR expected, + const char** actual, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLAGS_T flags); + +void UnityAssertEqualMemory( UNITY_INTERNAL_PTR expected, + UNITY_INTERNAL_PTR actual, + const UNITY_UINT32 length, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLAGS_T flags); + +void UnityAssertIntNumbersWithin(const UNITY_UINT delta, + const UNITY_INT expected, + const UNITY_INT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style); + +void UnityAssertUintNumbersWithin(const UNITY_UINT delta, + const UNITY_UINT expected, + const UNITY_UINT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style); + +void UnityAssertNumbersArrayWithin(const UNITY_UINT delta, + UNITY_INTERNAL_PTR expected, + UNITY_INTERNAL_PTR actual, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_DISPLAY_STYLE_T style, + const UNITY_FLAGS_T flags); + +#ifndef UNITY_EXCLUDE_SETJMP_H +UNITY_NORETURN void UnityFail(const char* message, const UNITY_LINE_TYPE line); +UNITY_NORETURN void UnityIgnore(const char* message, const UNITY_LINE_TYPE line); +#else +void UnityFail(const char* message, const UNITY_LINE_TYPE line); +void UnityIgnore(const char* message, const UNITY_LINE_TYPE line); +#endif + +void UnityMessage(const char* message, const UNITY_LINE_TYPE line); + +#ifndef UNITY_EXCLUDE_FLOAT +void UnityAssertFloatsWithin(const UNITY_FLOAT delta, + const UNITY_FLOAT expected, + const UNITY_FLOAT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber); + +void UnityAssertFloatsNotWithin(const UNITY_FLOAT delta, + const UNITY_FLOAT expected, + const UNITY_FLOAT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber); + +void UnityAssertGreaterOrLessFloat(const UNITY_FLOAT threshold, + const UNITY_FLOAT actual, + const UNITY_COMPARISON_T compare, + const char* msg, + const UNITY_LINE_TYPE linenumber); + +void UnityAssertWithinFloatArray(const UNITY_FLOAT delta, + UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* expected, + UNITY_PTR_ATTRIBUTE const UNITY_FLOAT* actual, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLAGS_T flags); + +void UnityAssertFloatSpecial(const UNITY_FLOAT actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLOAT_TRAIT_T style); +#endif + +#ifndef UNITY_EXCLUDE_DOUBLE +void UnityAssertDoublesWithin(const UNITY_DOUBLE delta, + const UNITY_DOUBLE expected, + const UNITY_DOUBLE actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber); + +void UnityAssertDoublesNotWithin(const UNITY_DOUBLE delta, + const UNITY_DOUBLE expected, + const UNITY_DOUBLE actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber); + +void UnityAssertGreaterOrLessDouble(const UNITY_DOUBLE threshold, + const UNITY_DOUBLE actual, + const UNITY_COMPARISON_T compare, + const char* msg, + const UNITY_LINE_TYPE linenumber); + +void UnityAssertWithinDoubleArray(const UNITY_DOUBLE delta, + UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* expected, + UNITY_PTR_ATTRIBUTE const UNITY_DOUBLE* actual, + const UNITY_UINT32 num_elements, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLAGS_T flags); + +void UnityAssertDoubleSpecial(const UNITY_DOUBLE actual, + const char* msg, + const UNITY_LINE_TYPE lineNumber, + const UNITY_FLOAT_TRAIT_T style); +#endif + +/*------------------------------------------------------- + * Helpers + *-------------------------------------------------------*/ + +UNITY_INTERNAL_PTR UnityNumToPtr(const UNITY_INT num, const UNITY_UINT8 size); +#ifndef UNITY_EXCLUDE_FLOAT +UNITY_INTERNAL_PTR UnityFloatToPtr(const float num); +#endif +#ifndef UNITY_EXCLUDE_DOUBLE +UNITY_INTERNAL_PTR UnityDoubleToPtr(const double num); +#endif + +/*------------------------------------------------------- + * Error Strings We Might Need + *-------------------------------------------------------*/ + +extern const char UnityStrOk[]; +extern const char UnityStrPass[]; +extern const char UnityStrFail[]; +extern const char UnityStrIgnore[]; + +extern const char UnityStrErrFloat[]; +extern const char UnityStrErrDouble[]; +extern const char UnityStrErr64[]; +extern const char UnityStrErrShorthand[]; +extern const char UnityStrErrDetailStack[]; + +/*------------------------------------------------------- + * Test Running Macros + *-------------------------------------------------------*/ + +#ifdef UNITY_TEST_PROTECT +#define TEST_PROTECT() UNITY_TEST_PROTECT() +#else +#ifndef UNITY_EXCLUDE_SETJMP_H +#define TEST_PROTECT() (setjmp(Unity.AbortFrame) == 0) +#else +#define TEST_PROTECT() 1 +#endif +#endif + +#ifdef UNITY_TEST_ABORT +#define TEST_ABORT() UNITY_TEST_ABORT() +#else +#ifndef UNITY_EXCLUDE_SETJMP_H +#define TEST_ABORT() longjmp(Unity.AbortFrame, 1) +#else +#define TEST_ABORT() return +#endif +#endif + +/* Automatically enable variadic macros support, if it not enabled before */ +#ifndef UNITY_SUPPORT_VARIADIC_MACROS + #ifdef __STDC_VERSION__ + #if __STDC_VERSION__ >= 199901L + #define UNITY_SUPPORT_VARIADIC_MACROS + #endif + #endif +#endif + +/* This tricky series of macros gives us an optional line argument to treat it as RUN_TEST(func, num=__LINE__) */ +#ifndef RUN_TEST +#ifdef UNITY_SUPPORT_VARIADIC_MACROS +#define RUN_TEST(...) RUN_TEST_AT_LINE(__VA_ARGS__, __LINE__, throwaway) +#define RUN_TEST_AT_LINE(func, line, ...) UnityDefaultTestRun(func, #func, line) +#endif +#endif + +/* Enable default macros for masking param tests test cases */ +#ifdef UNITY_SUPPORT_TEST_CASES + #ifdef UNITY_SUPPORT_VARIADIC_MACROS + #if !defined(TEST_CASE) && !defined(UNITY_EXCLUDE_TEST_CASE) + #define TEST_CASE(...) + #endif + #if !defined(TEST_RANGE) && !defined(UNITY_EXCLUDE_TEST_RANGE) + #define TEST_RANGE(...) + #endif + #if !defined(TEST_MATRIX) && !defined(UNITY_EXCLUDE_TEST_MATRIX) + #define TEST_MATRIX(...) + #endif + #endif +#endif + +/* If we can't do the tricky version, we'll just have to require them to always include the line number */ +#ifndef RUN_TEST +#ifdef CMOCK +#define RUN_TEST(func, num) UnityDefaultTestRun(func, #func, num) +#else +#define RUN_TEST(func) UnityDefaultTestRun(func, #func, __LINE__) +#endif +#endif + +#define TEST_LINE_NUM (Unity.CurrentTestLineNumber) +#define TEST_IS_IGNORED (Unity.CurrentTestIgnored) +#define UNITY_NEW_TEST(a) \ + Unity.CurrentTestName = (a); \ + Unity.CurrentTestLineNumber = (UNITY_LINE_TYPE)(__LINE__); \ + Unity.NumberOfTests++; + +#ifndef UNITY_BEGIN +#define UNITY_BEGIN() UnityBegin(__FILE__) +#endif + +#ifndef UNITY_END +#define UNITY_END() UnityEnd() +#endif + +#ifndef UNITY_SHORTHAND_AS_INT +#ifndef UNITY_SHORTHAND_AS_MEM +#ifndef UNITY_SHORTHAND_AS_NONE +#ifndef UNITY_SHORTHAND_AS_RAW +#define UNITY_SHORTHAND_AS_OLD +#endif +#endif +#endif +#endif + +/*----------------------------------------------- + * Command Line Argument Support + *-----------------------------------------------*/ + +#ifdef UNITY_USE_COMMAND_LINE_ARGS +int UnityParseOptions(int argc, char** argv); +int UnityTestMatches(void); +#endif + +/*------------------------------------------------------- + * Basic Fail and Ignore + *-------------------------------------------------------*/ + +#define UNITY_TEST_FAIL(line, message) UnityFail( (message), (UNITY_LINE_TYPE)(line)) +#define UNITY_TEST_IGNORE(line, message) UnityIgnore( (message), (UNITY_LINE_TYPE)(line)) + +/*------------------------------------------------------- + * Test Asserts + *-------------------------------------------------------*/ + +#define UNITY_TEST_ASSERT(condition, line, message) do { if (condition) { /* nothing*/ } else { UNITY_TEST_FAIL((line), (message)); } } while (0) +#define UNITY_TEST_ASSERT_NULL(pointer, line, message) UNITY_TEST_ASSERT(((pointer) == NULL), (line), (message)) +#define UNITY_TEST_ASSERT_NOT_NULL(pointer, line, message) UNITY_TEST_ASSERT(((pointer) != NULL), (line), (message)) +#define UNITY_TEST_ASSERT_EMPTY(pointer, line, message) UNITY_TEST_ASSERT(((pointer[0]) == 0), (line), (message)) +#define UNITY_TEST_ASSERT_NOT_EMPTY(pointer, line, message) UNITY_TEST_ASSERT(((pointer[0]) != 0), (line), (message)) + +#define UNITY_TEST_ASSERT_EQUAL_INT(expected, actual, line, message) UnityAssertEqualIntNumber((UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT) +#define UNITY_TEST_ASSERT_EQUAL_INT8(expected, actual, line, message) UnityAssertEqualIntNumber((UNITY_INT)(UNITY_INT8 )(expected), (UNITY_INT)(UNITY_INT8 )(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8) +#define UNITY_TEST_ASSERT_EQUAL_INT16(expected, actual, line, message) UnityAssertEqualIntNumber((UNITY_INT)(UNITY_INT16)(expected), (UNITY_INT)(UNITY_INT16)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16) +#define UNITY_TEST_ASSERT_EQUAL_INT32(expected, actual, line, message) UnityAssertEqualIntNumber((UNITY_INT)(UNITY_INT32)(expected), (UNITY_INT)(UNITY_INT32)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32) +#define UNITY_TEST_ASSERT_EQUAL_UINT(expected, actual, line, message) UnityAssertEqualUintNumber((UNITY_UINT)(expected), (UNITY_UINT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT) +#define UNITY_TEST_ASSERT_EQUAL_UINT8(expected, actual, line, message) UnityAssertEqualUintNumber((UNITY_UINT)(UNITY_UINT8)(expected), (UNITY_UINT)(UNITY_UINT8)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT8) +#define UNITY_TEST_ASSERT_EQUAL_UINT16(expected, actual, line, message) UnityAssertEqualUintNumber((UNITY_UINT)(UNITY_UINT16)(expected), (UNITY_UINT)(UNITY_UINT16)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT16) +#define UNITY_TEST_ASSERT_EQUAL_UINT32(expected, actual, line, message) UnityAssertEqualUintNumber((UNITY_UINT)(UNITY_UINT32)(expected), (UNITY_UINT)(UNITY_UINT32)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT32) +#define UNITY_TEST_ASSERT_EQUAL_HEX8(expected, actual, line, message) UnityAssertEqualUintNumber((UNITY_UINT)(UNITY_UINT8)(expected), (UNITY_UINT)(UNITY_UINT8)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX8) +#define UNITY_TEST_ASSERT_EQUAL_HEX16(expected, actual, line, message) UnityAssertEqualUintNumber((UNITY_UINT)(UNITY_UINT16)(expected), (UNITY_UINT)(UNITY_UINT16)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX16) +#define UNITY_TEST_ASSERT_EQUAL_HEX32(expected, actual, line, message) UnityAssertEqualUintNumber((UNITY_UINT)(UNITY_UINT32)(expected), (UNITY_UINT)(UNITY_UINT32)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX32) +#define UNITY_TEST_ASSERT_EQUAL_CHAR(expected, actual, line, message) UnityAssertEqualIntNumber((UNITY_INT)(UNITY_INT8 )(expected), (UNITY_INT)(UNITY_INT8 )(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_CHAR) +#define UNITY_TEST_ASSERT_BITS(mask, expected, actual, line, message) UnityAssertBits((UNITY_INT)(mask), (UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line)) + +#define UNITY_TEST_ASSERT_NOT_EQUAL_INT(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT) +#define UNITY_TEST_ASSERT_NOT_EQUAL_INT8(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT8 )(threshold), (UNITY_INT)(UNITY_INT8 )(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8) +#define UNITY_TEST_ASSERT_NOT_EQUAL_INT16(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT16)(threshold), (UNITY_INT)(UNITY_INT16)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16) +#define UNITY_TEST_ASSERT_NOT_EQUAL_INT32(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT32)(threshold), (UNITY_INT)(UNITY_INT32)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32) +#define UNITY_TEST_ASSERT_NOT_EQUAL_UINT(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(threshold), (UNITY_UINT)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT) +#define UNITY_TEST_ASSERT_NOT_EQUAL_UINT8(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT8 )(threshold), (UNITY_UINT)(UNITY_UINT8 )(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT8) +#define UNITY_TEST_ASSERT_NOT_EQUAL_UINT16(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT16)(threshold), (UNITY_UINT)(UNITY_UINT16)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT16) +#define UNITY_TEST_ASSERT_NOT_EQUAL_UINT32(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT32)(threshold), (UNITY_UINT)(UNITY_UINT32)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT32) +#define UNITY_TEST_ASSERT_NOT_EQUAL_HEX8(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT8 )(threshold), (UNITY_UINT)(UNITY_UINT8 )(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX8) +#define UNITY_TEST_ASSERT_NOT_EQUAL_HEX16(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT16)(threshold), (UNITY_UINT)(UNITY_UINT16)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX16) +#define UNITY_TEST_ASSERT_NOT_EQUAL_HEX32(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT32)(threshold), (UNITY_UINT)(UNITY_UINT32)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX32) +#define UNITY_TEST_ASSERT_NOT_EQUAL_CHAR(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT8 )(threshold), (UNITY_INT)(UNITY_INT8 )(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_CHAR) + +#define UNITY_TEST_ASSERT_GREATER_THAN_INT(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT) +#define UNITY_TEST_ASSERT_GREATER_THAN_INT8(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT8 )(threshold), (UNITY_INT)(UNITY_INT8 )(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8) +#define UNITY_TEST_ASSERT_GREATER_THAN_INT16(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT16)(threshold), (UNITY_INT)(UNITY_INT16)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16) +#define UNITY_TEST_ASSERT_GREATER_THAN_INT32(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT32)(threshold), (UNITY_INT)(UNITY_INT32)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32) +#define UNITY_TEST_ASSERT_GREATER_THAN_UINT(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(threshold), (UNITY_UINT)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT) +#define UNITY_TEST_ASSERT_GREATER_THAN_UINT8(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT8 )(threshold), (UNITY_UINT)(UNITY_UINT8 )(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT8) +#define UNITY_TEST_ASSERT_GREATER_THAN_UINT16(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT16)(threshold), (UNITY_UINT)(UNITY_UINT16)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT16) +#define UNITY_TEST_ASSERT_GREATER_THAN_UINT32(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT32)(threshold), (UNITY_UINT)(UNITY_UINT32)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT32) +#define UNITY_TEST_ASSERT_GREATER_THAN_HEX8(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT8 )(threshold), (UNITY_UINT)(UNITY_UINT8 )(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX8) +#define UNITY_TEST_ASSERT_GREATER_THAN_HEX16(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT16)(threshold), (UNITY_UINT)(UNITY_UINT16)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX16) +#define UNITY_TEST_ASSERT_GREATER_THAN_HEX32(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT32)(threshold), (UNITY_UINT)(UNITY_UINT32)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX32) +#define UNITY_TEST_ASSERT_GREATER_THAN_CHAR(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT8 )(threshold), (UNITY_INT)(UNITY_INT8 )(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_CHAR) + +#define UNITY_TEST_ASSERT_SMALLER_THAN_INT(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT) +#define UNITY_TEST_ASSERT_SMALLER_THAN_INT8(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT8 )(threshold), (UNITY_INT)(UNITY_INT8 )(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8) +#define UNITY_TEST_ASSERT_SMALLER_THAN_INT16(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT16)(threshold), (UNITY_INT)(UNITY_INT16)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16) +#define UNITY_TEST_ASSERT_SMALLER_THAN_INT32(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT32)(threshold), (UNITY_INT)(UNITY_INT32)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32) +#define UNITY_TEST_ASSERT_SMALLER_THAN_UINT(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(threshold), (UNITY_UINT)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT) +#define UNITY_TEST_ASSERT_SMALLER_THAN_UINT8(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT8 )(threshold), (UNITY_UINT)(UNITY_UINT8 )(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT8) +#define UNITY_TEST_ASSERT_SMALLER_THAN_UINT16(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT16)(threshold), (UNITY_UINT)(UNITY_UINT16)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT16) +#define UNITY_TEST_ASSERT_SMALLER_THAN_UINT32(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT32)(threshold), (UNITY_UINT)(UNITY_UINT32)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT32) +#define UNITY_TEST_ASSERT_SMALLER_THAN_HEX8(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT8 )(threshold), (UNITY_UINT)(UNITY_UINT8 )(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX8) +#define UNITY_TEST_ASSERT_SMALLER_THAN_HEX16(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT16)(threshold), (UNITY_UINT)(UNITY_UINT16)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX16) +#define UNITY_TEST_ASSERT_SMALLER_THAN_HEX32(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT32)(threshold), (UNITY_UINT)(UNITY_UINT32)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX32) +#define UNITY_TEST_ASSERT_SMALLER_THAN_CHAR(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT8 )(threshold), (UNITY_INT)(UNITY_INT8 )(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_CHAR) + +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT) (threshold), (UNITY_INT) (actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT8(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT8 ) (threshold), (UNITY_INT)(UNITY_INT8 ) (actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT16(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT16) (threshold), (UNITY_INT)(UNITY_INT16) (actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT32(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT32) (threshold), (UNITY_INT)(UNITY_INT32) (actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT) (threshold), (UNITY_UINT) (actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT8(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT8 )(threshold), (UNITY_UINT)(UNITY_UINT8 )(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT8) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT16(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT16)(threshold), (UNITY_UINT)(UNITY_UINT16)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT16) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT32(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT32)(threshold), (UNITY_UINT)(UNITY_UINT32)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT32) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX8(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT8 )(threshold), (UNITY_UINT)(UNITY_UINT8 )(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX8) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX16(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT16)(threshold), (UNITY_UINT)(UNITY_UINT16)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX16) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX32(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT32)(threshold), (UNITY_UINT)(UNITY_UINT32)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX32) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_CHAR(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT8 ) (threshold), (UNITY_INT)(UNITY_INT8 ) (actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_CHAR) + +#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT) (threshold), (UNITY_INT) (actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT) +#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT8(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT8 )(threshold), (UNITY_INT)(UNITY_INT8 ) (actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8) +#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT16(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT16)(threshold), (UNITY_INT)(UNITY_INT16) (actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16) +#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT32(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT32)(threshold), (UNITY_INT)(UNITY_INT32) (actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32) +#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT) (threshold), (UNITY_UINT) (actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT) +#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT8(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT8 )(threshold), (UNITY_UINT)(UNITY_UINT8 )(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT8) +#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT16(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT16)(threshold), (UNITY_UINT)(UNITY_UINT16)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT16) +#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT32(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT32)(threshold), (UNITY_UINT)(UNITY_UINT32)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT32) +#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX8(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT8 )(threshold), (UNITY_UINT)(UNITY_UINT8 )(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX8) +#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX16(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT16)(threshold), (UNITY_UINT)(UNITY_UINT16)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX16) +#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX32(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(UNITY_UINT32)(threshold), (UNITY_UINT)(UNITY_UINT32)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX32) +#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_CHAR(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(UNITY_INT8 )(threshold), (UNITY_INT)(UNITY_INT8 ) (actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_CHAR) + +#define UNITY_TEST_ASSERT_INT_WITHIN(delta, expected, actual, line, message) UnityAssertIntNumbersWithin( (delta), (UNITY_INT) (expected), (UNITY_INT) (actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT) +#define UNITY_TEST_ASSERT_INT8_WITHIN(delta, expected, actual, line, message) UnityAssertIntNumbersWithin((UNITY_UINT8 )(delta), (UNITY_INT)(UNITY_INT8 ) (expected), (UNITY_INT)(UNITY_INT8 ) (actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8) +#define UNITY_TEST_ASSERT_INT16_WITHIN(delta, expected, actual, line, message) UnityAssertIntNumbersWithin((UNITY_UINT16 )(delta), (UNITY_INT)(UNITY_INT16) (expected), (UNITY_INT)(UNITY_INT16) (actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16) +#define UNITY_TEST_ASSERT_INT32_WITHIN(delta, expected, actual, line, message) UnityAssertIntNumbersWithin((UNITY_UINT32 )(delta), (UNITY_INT)(UNITY_INT32) (expected), (UNITY_INT)(UNITY_INT32) (actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32) +#define UNITY_TEST_ASSERT_UINT_WITHIN(delta, expected, actual, line, message) UnityAssertUintNumbersWithin( (delta), (UNITY_UINT) (expected), (UNITY_UINT) (actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT) +#define UNITY_TEST_ASSERT_UINT8_WITHIN(delta, expected, actual, line, message) UnityAssertUintNumbersWithin((UNITY_UINT8 )(delta), (UNITY_UINT)(UNITY_UINT)(UNITY_UINT8 )(expected), (UNITY_UINT)(UNITY_UINT)(UNITY_UINT8 )(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT8) +#define UNITY_TEST_ASSERT_UINT16_WITHIN(delta, expected, actual, line, message) UnityAssertUintNumbersWithin((UNITY_UINT16)(delta), (UNITY_UINT)(UNITY_UINT)(UNITY_UINT16)(expected), (UNITY_UINT)(UNITY_UINT)(UNITY_UINT16)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT16) +#define UNITY_TEST_ASSERT_UINT32_WITHIN(delta, expected, actual, line, message) UnityAssertUintNumbersWithin((UNITY_UINT32)(delta), (UNITY_UINT)(UNITY_UINT)(UNITY_UINT32)(expected), (UNITY_UINT)(UNITY_UINT)(UNITY_UINT32)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT32) +#define UNITY_TEST_ASSERT_HEX8_WITHIN(delta, expected, actual, line, message) UnityAssertUintNumbersWithin((UNITY_UINT8 )(delta), (UNITY_UINT)(UNITY_UINT)(UNITY_UINT8 )(expected), (UNITY_UINT)(UNITY_UINT)(UNITY_UINT8 )(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX8) +#define UNITY_TEST_ASSERT_HEX16_WITHIN(delta, expected, actual, line, message) UnityAssertUintNumbersWithin((UNITY_UINT16)(delta), (UNITY_UINT)(UNITY_UINT)(UNITY_UINT16)(expected), (UNITY_UINT)(UNITY_UINT)(UNITY_UINT16)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX16) +#define UNITY_TEST_ASSERT_HEX32_WITHIN(delta, expected, actual, line, message) UnityAssertUintNumbersWithin((UNITY_UINT32)(delta), (UNITY_UINT)(UNITY_UINT)(UNITY_UINT32)(expected), (UNITY_UINT)(UNITY_UINT)(UNITY_UINT32)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX32) +#define UNITY_TEST_ASSERT_CHAR_WITHIN(delta, expected, actual, line, message) UnityAssertIntNumbersWithin((UNITY_UINT8 )(delta), (UNITY_INT)(UNITY_INT8 ) (expected), (UNITY_INT)(UNITY_INT8 ) (actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_CHAR) + +#define UNITY_TEST_ASSERT_INT_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UnityAssertNumbersArrayWithin( (delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_INT8_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UnityAssertNumbersArrayWithin((UNITY_UINT8 )(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_INT16_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UnityAssertNumbersArrayWithin((UNITY_UINT16)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_INT32_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UnityAssertNumbersArrayWithin((UNITY_UINT32)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_UINT_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UnityAssertNumbersArrayWithin( (delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_UINT8_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UnityAssertNumbersArrayWithin((UNITY_UINT8 )(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT8, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_UINT16_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UnityAssertNumbersArrayWithin((UNITY_UINT16)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT16, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_UINT32_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UnityAssertNumbersArrayWithin((UNITY_UINT32)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT32, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_HEX8_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UnityAssertNumbersArrayWithin((UNITY_UINT8 )(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX8, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_HEX16_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UnityAssertNumbersArrayWithin((UNITY_UINT16)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX16, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_HEX32_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UnityAssertNumbersArrayWithin((UNITY_UINT32)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX32, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_CHAR_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UnityAssertNumbersArrayWithin((UNITY_UINT8)( delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), ((UNITY_UINT32)(num_elements)), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_CHAR, UNITY_ARRAY_TO_ARRAY) + + +#define UNITY_TEST_ASSERT_EQUAL_PTR(expected, actual, line, message) UnityAssertEqualIntNumber((UNITY_PTR_TO_INT)(expected), (UNITY_PTR_TO_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_POINTER) +#define UNITY_TEST_ASSERT_EQUAL_STRING(expected, actual, line, message) UnityAssertEqualString((const char*)(expected), (const char*)(actual), (message), (UNITY_LINE_TYPE)(line)) +#define UNITY_TEST_ASSERT_EQUAL_STRING_LEN(expected, actual, len, line, message) UnityAssertEqualStringLen((const char*)(expected), (const char*)(actual), (UNITY_UINT32)(len), (message), (UNITY_LINE_TYPE)(line)) +#define UNITY_TEST_ASSERT_EQUAL_MEMORY(expected, actual, len, line, message) UnityAssertEqualMemory((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(len), 1, (message), (UNITY_LINE_TYPE)(line), UNITY_ARRAY_TO_ARRAY) + +#define UNITY_TEST_ASSERT_EQUAL_INT_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EQUAL_INT8_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EQUAL_INT16_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EQUAL_INT32_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EQUAL_UINT_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EQUAL_UINT8_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT8, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EQUAL_UINT16_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT16, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EQUAL_UINT32_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT32, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EQUAL_HEX8_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX8, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EQUAL_HEX16_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX16, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX32, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EQUAL_PTR_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_POINTER, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EQUAL_STRING_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualStringArray((UNITY_INTERNAL_PTR)(expected), (const char**)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EQUAL_MEMORY_ARRAY(expected, actual, len, num_elements, line, message) UnityAssertEqualMemory((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(len), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EQUAL_CHAR_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_CHAR, UNITY_ARRAY_TO_ARRAY) + +#define UNITY_TEST_ASSERT_EACH_EQUAL_INT(expected, actual, num_elements, line, message) UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT) (expected), (UNITY_INT_WIDTH / 8)), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT, UNITY_ARRAY_TO_VAL) +#define UNITY_TEST_ASSERT_EACH_EQUAL_INT8(expected, actual, num_elements, line, message) UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_INT8 )(expected), 1), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT8, UNITY_ARRAY_TO_VAL) +#define UNITY_TEST_ASSERT_EACH_EQUAL_INT16(expected, actual, num_elements, line, message) UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_INT16 )(expected), 2), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT16, UNITY_ARRAY_TO_VAL) +#define UNITY_TEST_ASSERT_EACH_EQUAL_INT32(expected, actual, num_elements, line, message) UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_INT32 )(expected), 4), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT32, UNITY_ARRAY_TO_VAL) +#define UNITY_TEST_ASSERT_EACH_EQUAL_UINT(expected, actual, num_elements, line, message) UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT) (expected), (UNITY_INT_WIDTH / 8)), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT, UNITY_ARRAY_TO_VAL) +#define UNITY_TEST_ASSERT_EACH_EQUAL_UINT8(expected, actual, num_elements, line, message) UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_UINT8 )(expected), 1), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT8, UNITY_ARRAY_TO_VAL) +#define UNITY_TEST_ASSERT_EACH_EQUAL_UINT16(expected, actual, num_elements, line, message) UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_UINT16)(expected), 2), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT16, UNITY_ARRAY_TO_VAL) +#define UNITY_TEST_ASSERT_EACH_EQUAL_UINT32(expected, actual, num_elements, line, message) UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_UINT32)(expected), 4), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT32, UNITY_ARRAY_TO_VAL) +#define UNITY_TEST_ASSERT_EACH_EQUAL_HEX8(expected, actual, num_elements, line, message) UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_INT8 )(expected), 1), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX8, UNITY_ARRAY_TO_VAL) +#define UNITY_TEST_ASSERT_EACH_EQUAL_HEX16(expected, actual, num_elements, line, message) UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_INT16 )(expected), 2), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX16, UNITY_ARRAY_TO_VAL) +#define UNITY_TEST_ASSERT_EACH_EQUAL_HEX32(expected, actual, num_elements, line, message) UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_INT32 )(expected), 4), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX32, UNITY_ARRAY_TO_VAL) +#define UNITY_TEST_ASSERT_EACH_EQUAL_PTR(expected, actual, num_elements, line, message) UnityAssertEqualIntArray(UnityNumToPtr((UNITY_PTR_TO_INT) (expected), (UNITY_POINTER_WIDTH / 8)), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_POINTER, UNITY_ARRAY_TO_VAL) +#define UNITY_TEST_ASSERT_EACH_EQUAL_STRING(expected, actual, num_elements, line, message) UnityAssertEqualStringArray((UNITY_INTERNAL_PTR)(expected), (const char**)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_ARRAY_TO_VAL) +#define UNITY_TEST_ASSERT_EACH_EQUAL_MEMORY(expected, actual, len, num_elements, line, message) UnityAssertEqualMemory((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(len), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_ARRAY_TO_VAL) +#define UNITY_TEST_ASSERT_EACH_EQUAL_CHAR(expected, actual, num_elements, line, message) UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_INT8 )(expected), 1), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_CHAR, UNITY_ARRAY_TO_VAL) + +#ifdef UNITY_SUPPORT_64 +#define UNITY_TEST_ASSERT_EQUAL_INT64(expected, actual, line, message) UnityAssertEqualIntNumber((UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64) +#define UNITY_TEST_ASSERT_EQUAL_UINT64(expected, actual, line, message) UnityAssertEqualIntNumber((UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64) +#define UNITY_TEST_ASSERT_EQUAL_HEX64(expected, actual, line, message) UnityAssertEqualIntNumber((UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64) +#define UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements, line, message) UnityAssertEqualIntArray((UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EACH_EQUAL_INT64(expected, actual, num_elements, line, message) UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_INT64)(expected), 8), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64, UNITY_ARRAY_TO_VAL) +#define UNITY_TEST_ASSERT_EACH_EQUAL_UINT64(expected, actual, num_elements, line, message) UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_UINT64)(expected), 8), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64, UNITY_ARRAY_TO_VAL) +#define UNITY_TEST_ASSERT_EACH_EQUAL_HEX64(expected, actual, num_elements, line, message) UnityAssertEqualIntArray(UnityNumToPtr((UNITY_INT)(UNITY_INT64)(expected), 8), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64, UNITY_ARRAY_TO_VAL) +#define UNITY_TEST_ASSERT_INT64_WITHIN(delta, expected, actual, line, message) UnityAssertIntNumbersWithin((delta), (UNITY_INT)(expected), (UNITY_INT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64) +#define UNITY_TEST_ASSERT_UINT64_WITHIN(delta, expected, actual, line, message) UnityAssertUintNumbersWithin((delta), (UNITY_UINT)(expected), (UNITY_UINT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64) +#define UNITY_TEST_ASSERT_HEX64_WITHIN(delta, expected, actual, line, message) UnityAssertUintNumbersWithin((delta), (UNITY_UINT)(expected), (UNITY_UINT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64) +#define UNITY_TEST_ASSERT_NOT_EQUAL_INT64(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64) +#define UNITY_TEST_ASSERT_NOT_EQUAL_UINT64(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(threshold), (UNITY_UINT)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64) +#define UNITY_TEST_ASSERT_NOT_EQUAL_HEX64(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(threshold), (UNITY_UINT)(actual), UNITY_NOT_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64) +#define UNITY_TEST_ASSERT_GREATER_THAN_INT64(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64) +#define UNITY_TEST_ASSERT_GREATER_THAN_UINT64(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(threshold), (UNITY_UINT)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64) +#define UNITY_TEST_ASSERT_GREATER_THAN_HEX64(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(threshold), (UNITY_UINT)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT64(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT64(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(threshold), (UNITY_UINT)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX64(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(threshold), (UNITY_UINT)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64) +#define UNITY_TEST_ASSERT_SMALLER_THAN_INT64(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64) +#define UNITY_TEST_ASSERT_SMALLER_THAN_UINT64(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(threshold), (UNITY_UINT)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64) +#define UNITY_TEST_ASSERT_SMALLER_THAN_HEX64(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(threshold), (UNITY_UINT)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64) +#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT64(threshold, actual, line, message) UnityAssertIntGreaterOrLessOrEqualNumber((UNITY_INT)(threshold), (UNITY_INT)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64) +#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT64(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(threshold), (UNITY_UINT)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64) +#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX64(threshold, actual, line, message) UnityAssertUintGreaterOrLessOrEqualNumber((UNITY_UINT)(threshold), (UNITY_UINT)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64) +#define UNITY_TEST_ASSERT_INT64_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UnityAssertNumbersArrayWithin((UNITY_UINT64)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_INT64, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_UINT64_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UnityAssertNumbersArrayWithin((UNITY_UINT64)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_UINT64, UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_HEX64_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UnityAssertNumbersArrayWithin((UNITY_UINT64)(delta), (UNITY_INTERNAL_PTR)(expected), (UNITY_INTERNAL_PTR)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_DISPLAY_STYLE_HEX64, UNITY_ARRAY_TO_ARRAY) +#else +#define UNITY_TEST_ASSERT_EQUAL_INT64(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_EQUAL_UINT64(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_EQUAL_HEX64(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_EQUAL_INT64_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_EQUAL_UINT64_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_EQUAL_HEX64_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_INT64_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_UINT64_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_HEX64_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_GREATER_THAN_INT64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_GREATER_THAN_UINT64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_GREATER_THAN_HEX64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_INT64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_UINT64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_HEX64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_SMALLER_THAN_INT64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_SMALLER_THAN_UINT64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_SMALLER_THAN_HEX64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_INT64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_UINT64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_SMALLER_OR_EQUAL_HEX64(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_INT64_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_UINT64_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#define UNITY_TEST_ASSERT_HEX64_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErr64) +#endif + +#ifdef UNITY_EXCLUDE_FLOAT +#define UNITY_TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat) +#define UNITY_TEST_ASSERT_FLOAT_NOT_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat) +#define UNITY_TEST_ASSERT_EQUAL_FLOAT(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat) +#define UNITY_TEST_ASSERT_NOT_EQUAL_FLOAT(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat) +#define UNITY_TEST_ASSERT_FLOAT_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat) +#define UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat) +#define UNITY_TEST_ASSERT_EACH_EQUAL_FLOAT(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat) +#define UNITY_TEST_ASSERT_GREATER_THAN_FLOAT(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_FLOAT(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat) +#define UNITY_TEST_ASSERT_LESS_THAN_FLOAT(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat) +#define UNITY_TEST_ASSERT_LESS_OR_EQUAL_FLOAT(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat) +#define UNITY_TEST_ASSERT_FLOAT_IS_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat) +#define UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat) +#define UNITY_TEST_ASSERT_FLOAT_IS_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat) +#define UNITY_TEST_ASSERT_FLOAT_IS_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat) +#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat) +#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat) +#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat) +#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrFloat) +#else +#define UNITY_TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual, line, message) UnityAssertFloatsWithin((UNITY_FLOAT)(delta), (UNITY_FLOAT)(expected), (UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line)) +#define UNITY_TEST_ASSERT_FLOAT_NOT_WITHIN(delta, expected, actual, line, message) UnityAssertFloatsNotWithin((UNITY_FLOAT)(delta), (UNITY_FLOAT)(expected), (UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line)) +#define UNITY_TEST_ASSERT_EQUAL_FLOAT(expected, actual, line, message) UNITY_TEST_ASSERT_FLOAT_WITHIN((UNITY_FLOAT)(expected) * (UNITY_FLOAT)UNITY_FLOAT_PRECISION, (UNITY_FLOAT)(expected), (UNITY_FLOAT)(actual), (UNITY_LINE_TYPE)(line), (message)) +#define UNITY_TEST_ASSERT_NOT_EQUAL_FLOAT(expected, actual, line, message) UNITY_TEST_ASSERT_FLOAT_NOT_WITHIN((UNITY_FLOAT)(expected) * (UNITY_FLOAT)UNITY_FLOAT_PRECISION, (UNITY_FLOAT)(expected), (UNITY_FLOAT)(actual), (UNITY_LINE_TYPE)(line), (message)) +#define UNITY_TEST_ASSERT_FLOAT_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UnityAssertWithinFloatArray((UNITY_FLOAT)(delta), (const UNITY_FLOAT*)(expected), (const UNITY_FLOAT*)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EQUAL_FLOAT_ARRAY(expected, actual, num_elements, line, message) UnityAssertWithinFloatArray((UNITY_FLOAT)0, (const UNITY_FLOAT*)(expected), (const UNITY_FLOAT*)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EACH_EQUAL_FLOAT(expected, actual, num_elements, line, message) UnityAssertWithinFloatArray((UNITY_FLOAT)0, UnityFloatToPtr(expected), (const UNITY_FLOAT*)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_ARRAY_TO_VAL) +#define UNITY_TEST_ASSERT_GREATER_THAN_FLOAT(threshold, actual, line, message) UnityAssertGreaterOrLessFloat((UNITY_FLOAT)(threshold), (UNITY_FLOAT)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line)) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_FLOAT(threshold, actual, line, message) UnityAssertGreaterOrLessFloat((UNITY_FLOAT)(threshold), (UNITY_FLOAT)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line)) +#define UNITY_TEST_ASSERT_LESS_THAN_FLOAT(threshold, actual, line, message) UnityAssertGreaterOrLessFloat((UNITY_FLOAT)(threshold), (UNITY_FLOAT)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line)) +#define UNITY_TEST_ASSERT_LESS_OR_EQUAL_FLOAT(threshold, actual, line, message) UnityAssertGreaterOrLessFloat((UNITY_FLOAT)(threshold), (UNITY_FLOAT)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line)) +#define UNITY_TEST_ASSERT_FLOAT_IS_INF(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_INF) +#define UNITY_TEST_ASSERT_FLOAT_IS_NEG_INF(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NEG_INF) +#define UNITY_TEST_ASSERT_FLOAT_IS_NAN(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NAN) +#define UNITY_TEST_ASSERT_FLOAT_IS_DETERMINATE(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_DET) +#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_INF(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_INF) +#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NEG_INF(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_NEG_INF) +#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_NAN(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_NAN) +#define UNITY_TEST_ASSERT_FLOAT_IS_NOT_DETERMINATE(actual, line, message) UnityAssertFloatSpecial((UNITY_FLOAT)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_DET) +#endif + +#ifdef UNITY_EXCLUDE_DOUBLE +#define UNITY_TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble) +#define UNITY_TEST_ASSERT_DOUBLE_NOT_WITHIN(delta, expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble) +#define UNITY_TEST_ASSERT_EQUAL_DOUBLE(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble) +#define UNITY_TEST_ASSERT_NOT_EQUAL_DOUBLE(expected, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble) +#define UNITY_TEST_ASSERT_DOUBLE_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble) +#define UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble) +#define UNITY_TEST_ASSERT_EACH_EQUAL_DOUBLE(expected, actual, num_elements, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble) +#define UNITY_TEST_ASSERT_GREATER_THAN_DOUBLE(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_DOUBLE(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble) +#define UNITY_TEST_ASSERT_LESS_THAN_DOUBLE(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble) +#define UNITY_TEST_ASSERT_LESS_OR_EQUAL_DOUBLE(threshold, actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble) +#define UNITY_TEST_ASSERT_DOUBLE_IS_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble) +#define UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble) +#define UNITY_TEST_ASSERT_DOUBLE_IS_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble) +#define UNITY_TEST_ASSERT_DOUBLE_IS_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble) +#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble) +#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble) +#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NAN(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble) +#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE(actual, line, message) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDouble) +#else +#define UNITY_TEST_ASSERT_DOUBLE_WITHIN(delta, expected, actual, line, message) UnityAssertDoublesWithin((UNITY_DOUBLE)(delta), (UNITY_DOUBLE)(expected), (UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line)) +#define UNITY_TEST_ASSERT_DOUBLE_NOT_WITHIN(delta, expected, actual, line, message) UnityAssertDoublesNotWithin((UNITY_DOUBLE)(delta), (UNITY_DOUBLE)(expected), (UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line)) +#define UNITY_TEST_ASSERT_EQUAL_DOUBLE(expected, actual, line, message) UNITY_TEST_ASSERT_DOUBLE_WITHIN((UNITY_DOUBLE)(expected) * (UNITY_DOUBLE)UNITY_DOUBLE_PRECISION, (UNITY_DOUBLE)(expected), (UNITY_DOUBLE)(actual), (UNITY_LINE_TYPE)(line), (message)) +#define UNITY_TEST_ASSERT_NOT_EQUAL_DOUBLE(expected, actual, line, message) UNITY_TEST_ASSERT_DOUBLE_NOT_WITHIN((UNITY_DOUBLE)(expected) * (UNITY_DOUBLE)UNITY_DOUBLE_PRECISION, (UNITY_DOUBLE)(expected), (UNITY_DOUBLE)(actual), (UNITY_LINE_TYPE)(line), (message)) +#define UNITY_TEST_ASSERT_DOUBLE_ARRAY_WITHIN(delta, expected, actual, num_elements, line, message) UnityAssertWithinDoubleArray((UNITY_DOUBLE)(delta), (const UNITY_DOUBLE*)(expected), (const UNITY_DOUBLE*)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EQUAL_DOUBLE_ARRAY(expected, actual, num_elements, line, message) UnityAssertWithinDoubleArray((UNITY_DOUBLE)0, (const UNITY_DOUBLE*)(expected), (const UNITY_DOUBLE*)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_ARRAY_TO_ARRAY) +#define UNITY_TEST_ASSERT_EACH_EQUAL_DOUBLE(expected, actual, num_elements, line, message) UnityAssertWithinDoubleArray((UNITY_DOUBLE)0, UnityDoubleToPtr(expected), (const UNITY_DOUBLE*)(actual), (UNITY_UINT32)(num_elements), (message), (UNITY_LINE_TYPE)(line), UNITY_ARRAY_TO_VAL) +#define UNITY_TEST_ASSERT_GREATER_THAN_DOUBLE(threshold, actual, line, message) UnityAssertGreaterOrLessDouble((UNITY_DOUBLE)(threshold), (UNITY_DOUBLE)(actual), UNITY_GREATER_THAN, (message), (UNITY_LINE_TYPE)(line)) +#define UNITY_TEST_ASSERT_GREATER_OR_EQUAL_DOUBLE(threshold, actual, line, message) UnityAssertGreaterOrLessDouble((UNITY_DOUBLE)(threshold), (UNITY_DOUBLE)(actual), UNITY_GREATER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line)) +#define UNITY_TEST_ASSERT_LESS_THAN_DOUBLE(threshold, actual, line, message) UnityAssertGreaterOrLessDouble((UNITY_DOUBLE)(threshold), (UNITY_DOUBLE)(actual), UNITY_SMALLER_THAN, (message), (UNITY_LINE_TYPE)(line)) +#define UNITY_TEST_ASSERT_LESS_OR_EQUAL_DOUBLE(threshold, actual, line, message) UnityAssertGreaterOrLessDouble((UNITY_DOUBLE)(threshold), (UNITY_DOUBLE)(actual), UNITY_SMALLER_OR_EQUAL, (message), (UNITY_LINE_TYPE)(line)) +#define UNITY_TEST_ASSERT_DOUBLE_IS_INF(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_INF) +#define UNITY_TEST_ASSERT_DOUBLE_IS_NEG_INF(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NEG_INF) +#define UNITY_TEST_ASSERT_DOUBLE_IS_NAN(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NAN) +#define UNITY_TEST_ASSERT_DOUBLE_IS_DETERMINATE(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_DET) +#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_INF(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_INF) +#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NEG_INF(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_NEG_INF) +#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_NAN(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_NAN) +#define UNITY_TEST_ASSERT_DOUBLE_IS_NOT_DETERMINATE(actual, line, message) UnityAssertDoubleSpecial((UNITY_DOUBLE)(actual), (message), (UNITY_LINE_TYPE)(line), UNITY_FLOAT_IS_NOT_DET) +#endif + +#if !defined(UNITY_EXCLUDE_DETAILS) && defined(UNITY_DETAIL_STACK_SIZE) +#define UNITY_DETAIL_PUSH(label, value) UnityPushDetail((UNITY_DETAIL_LABEL_TYPE)(label), (UNITY_DETAIL_VALUE_TYPE)(value), __LINE__) +#define UNITY_DETAIL_POP(label, value) UnityPopDetail((UNITY_DETAIL_LABEL_TYPE)(label), (UNITY_DETAIL_VALUE_TYPE)(value), __LINE__) +#else +#define UNITY_DETAIL_PUSH(label, value) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDetailStack) +#define UNITY_DETAIL_POP(label, value) UNITY_TEST_FAIL((UNITY_LINE_TYPE)(line), UnityStrErrDetailStack) +#endif + +/* End of UNITY_INTERNALS_H */ +#endif