From 52a6aebc7a2615c7c19080f6d3ceafa21917d291 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=80=D0=B0=D0=BD=20=D0=A2=D1=8E=D1=82=D0=B5?= =?UTF-8?q?=D0=BD?= Date: Sun, 8 Mar 2026 12:35:59 +0000 Subject: [PATCH 01/24] Revert "config: Update README.md" This reverts commit 20b0638c6f8cd0aa7815db42daeddc708c33184a. --- README.md | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/README.md b/README.md index 786a1bf..61694bc 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,2 @@ # projectwork -Работаем по проекту ГОСТ-34-11.2012 - -# Роли в проекте: -- **Имя** - математик-программист, обеспечивает и проверяет корректность программирования математических объектов -- **Имя** - программист арифметики в конечных полях. -- **Имя** - программист всего алгоритма, включая процедуры ввода-вывода -- **Имя** - программист оболочки под DOS и Windows, сборщик программных модулей -- **Имя** - тестировщик корректности работы программы и её оптимальности. - -# Строение проекта: -``` - -``` +Работаем по проекту ГОСТ-34-11-2012 From b3eb61ead44df24f08cc37a6d63095e07a358d52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=80=D0=B0=D0=BD=20=D0=A2=D1=8E=D1=82=D0=B5?= =?UTF-8?q?=D0=BD?= Date: Sun, 8 Mar 2026 12:43:37 +0000 Subject: [PATCH 02/24] Reapply "config: Update README.md" This reverts commit 52a6aebc7a2615c7c19080f6d3ceafa21917d291. --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 61694bc..786a1bf 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,14 @@ # projectwork -Работаем по проекту ГОСТ-34-11-2012 +Работаем по проекту ГОСТ-34-11.2012 + +# Роли в проекте: +- **Имя** - математик-программист, обеспечивает и проверяет корректность программирования математических объектов +- **Имя** - программист арифметики в конечных полях. +- **Имя** - программист всего алгоритма, включая процедуры ввода-вывода +- **Имя** - программист оболочки под DOS и Windows, сборщик программных модулей +- **Имя** - тестировщик корректности работы программы и её оптимальности. + +# Строение проекта: +``` + +``` From d35fd7206d1d9dee3bcb76733a23790bbaec7343 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=80=D0=B0=D0=BD=20=D0=A2=D1=8E=D1=82=D0=B5?= =?UTF-8?q?=D0=BD?= Date: Sun, 8 Mar 2026 12:45:52 +0000 Subject: [PATCH 03/24] add: Makefile --- Makefile | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..e69de29 From a8e9fe4f9d482810eac683b39ca791337fb1e15a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=80=D0=B0=D0=BD=20=D0=A2=D1=8E=D1=82=D0=B5?= =?UTF-8?q?=D0=BD?= Date: Sun, 8 Mar 2026 12:50:30 +0000 Subject: [PATCH 04/24] add: project structure --- README.md | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 786a1bf..474176c 100644 --- a/README.md +++ b/README.md @@ -10,5 +10,33 @@ # Строение проекта: ``` - +projectwork/ +│ +├── Makefile # Сборка +├── README.md # Описание проекта +│ +├── include/ +│ ├── streebog.h # Публичный API хэш-функции +│ ├── streebog_tables.h # Таблицы констант (S-box, tau, A, C) +│ └── streebog_internal.h # Внутренние типы и макросы +│ +├── src/ +│ ├── streebog.c # Основная логика: Init / Update / Final +│ ├── streebog_compress.c # Функция сжатия g_N +│ ├── streebog_tables.c # Определения таблиц (Lookup Tables) +│ ├── streebog_transform.c # Преобразования: S, P, L, X, E (шифр) +│ └── streebog_utils.c # Вспомогательные функции (XOR, ADDC и т.д.) +│ +├── tests/ +│ ├── test_main.c # Точка входа тестов +│ ├── test_vectors_256.c # Тест-векторы для Стрибог-256 +│ ├── test_vectors_512.c # Тест-векторы для Стрибог-512 +│ └── test_vectors.h # Данные тест-векторов из ГОСТ +│ +├── tools/ +│ ├── main.c # CLI-утилита: вычисление хэша файла/строки +│ └── bench.c # Бенчмарк производительности +│ +└── docs/ + └── gost_34.11-2012.pdf # Текст стандарта (опционально) ``` From a64bd120de8da98d69a43a30e9e5410e214e76ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=80=D0=B0=D0=BD=20=D0=A2=D1=8E=D1=82=D0=B5?= =?UTF-8?q?=D0=BD?= Date: Mon, 9 Mar 2026 14:10:26 +0000 Subject: [PATCH 05/24] add: add GOST docs --- README.md | 30 +----------------------------- docs/gost-r-34.pdf | Bin 0 -> 545717 bytes 2 files changed, 1 insertion(+), 29 deletions(-) create mode 100755 docs/gost-r-34.pdf diff --git a/README.md b/README.md index 474176c..786a1bf 100644 --- a/README.md +++ b/README.md @@ -10,33 +10,5 @@ # Строение проекта: ``` -projectwork/ -│ -├── Makefile # Сборка -├── README.md # Описание проекта -│ -├── include/ -│ ├── streebog.h # Публичный API хэш-функции -│ ├── streebog_tables.h # Таблицы констант (S-box, tau, A, C) -│ └── streebog_internal.h # Внутренние типы и макросы -│ -├── src/ -│ ├── streebog.c # Основная логика: Init / Update / Final -│ ├── streebog_compress.c # Функция сжатия g_N -│ ├── streebog_tables.c # Определения таблиц (Lookup Tables) -│ ├── streebog_transform.c # Преобразования: S, P, L, X, E (шифр) -│ └── streebog_utils.c # Вспомогательные функции (XOR, ADDC и т.д.) -│ -├── tests/ -│ ├── test_main.c # Точка входа тестов -│ ├── test_vectors_256.c # Тест-векторы для Стрибог-256 -│ ├── test_vectors_512.c # Тест-векторы для Стрибог-512 -│ └── test_vectors.h # Данные тест-векторов из ГОСТ -│ -├── tools/ -│ ├── main.c # CLI-утилита: вычисление хэша файла/строки -│ └── bench.c # Бенчмарк производительности -│ -└── docs/ - └── gost_34.11-2012.pdf # Текст стандарта (опционально) + ``` diff --git a/docs/gost-r-34.pdf b/docs/gost-r-34.pdf new file mode 100755 index 0000000000000000000000000000000000000000..4f2f9ecb211089541b303108de73aa7e4218e5f4 GIT binary patch literal 545717 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ΠDAEQ{3;%t-7gY!^c#U|NGiAWqms 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

P9<0!Me#yz_J3AL3?sAQG9R%B=s92{>mAs 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

9$t#KVGDGe-FjA%zLLHg zRy^GnM+LZmrj??QIR$iSGX1{-e+l@6<8E5|=_Pk2xZJc}IO#p^Cuj`j7PmID{7Thc zrD9wiWcvJ}a8#lGU!}tx>Ji9D+Wb*%-Uw_5-R;*O$iu9P5CQRMMpra19v@#;UJmVS zPFh`Nd%QWkmnnJZZlm#*6Y|{iYnJ?c_RN-v#-hicTJXbLKiU7!^+Lb%(82DXRZhTv zYUo(Ke(2S=joZ8N74?~y>mO~OGIc@3``tvv{y*tuUe`RMv~*$q#GaMU zUTj}+gGOo*H=Qc+8y zwgEvyo2nEyR527vU0fBpg4A};xoZOU?#`L<_0FC1o$ou}8Oq+lK9QqiWd$7oLj^uI zFrLT1J{}d+1TlpF zmOP%gTL^*`2eTJvg&@lc9=O%LxCH%motvy<-PBAbYg^o8r+dE}&Ixf;)=Ac`V#!I&5p!ULvyS&ZMVvz&A}H8_*tToTgx{YA6F(x*Fa% zr0cF_nt}zYxx8NZ)NIZ?%N{#p9SGXC$l#&~E#$eSQkBigWvlhojEmNIaX|uwV^X&N znHwe&JQ4xUhv4C9@Q`K!f}6-0i0F+HPZ*Lo%dT{^QimzgOX4LJB?BcwEmRZLBarjY z&d{I|uQ_UdQKq8yVl8{PmeiWKw?_O%v)C#uPyEt#)y2kK4KCKD(NR&MW1>aJLWPNW=%4?~N zqtH=>>xBc;Ta4mGrLBhkPRo>{xQV5+SgLhKC=@izq7u#}YS3~GP()b7)vrC*IdEbA zmZoW4H(nyubNBApmUqJ1c&&f$u@>E97GAK;HJ3KERdsi)f43y>yUXVNWcT7-i-VdP zNfb*Pr_OBcwR+!Zc2+NZZtKXGyJyZIgGpOYE-G(oU-|sZS3yNuChl^>P|*>xVp2si z+72)A$^=Km9+*RUzb%WF&C5g!iEd24NK+{))Sl^>N|EN^${#+?ssE*H6~0ky=6e(p zvu6ipn@a;r&GtaMd5}HGy{#V6k3y#9|qZ5Fu!^juUBTC?$L&=Cp0&$;KC?8UqVjD2mz%c z4x&vQtPs+KXp;yoBMar(xgfQ#JTdwZf;&$)J(O6 zpq318ewZHKOrIUf!B<c5ZNIxa)u7P)=T^oLV{j*=ahAPwyDwGeHg_u0D)G=d> z9b%VpSt09LCa>eVgiW4xvO9#F!w2+1;4Hx?&&JPE|DT1&!O;j`>8}e{+Kv82kw*Ik ze_MEoz1rU$S#581Z4HgGqn6GX#H*TSi_vcM7@T2y_v?psR@eEcEs4x|_82}rB|J4B zI%Z9WOdkjU5~c%_$W7Y*)SRhzVek*iauwHmN>iB=Dp4abI6GBblEI_Xh@_5@m{F}K zL?@BTATZC1oEWEtM)@n+v;cEp*%T&&P6pxpOwFY6r#Ph-jSYdtO{Yhx=b-ia4mDPK1~fh#u*1jPaaks<{pl(O76&QJN*xqIUeNbu$#iAMf+S30@- zn{STYU|ë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

Z7K6_}q)~W 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℘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

V-fmk0y~IaDVTjib5tV7IJvK%5 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 literal 0 HcmV?d00001 From af8af6e9859148f4aaf2aebcd2821b125a87f232 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=80=D0=B0=D0=BD=20=D0=A2=D1=8E=D1=82=D0=B5?= =?UTF-8?q?=D0=BD?= Date: Mon, 9 Mar 2026 14:12:47 +0000 Subject: [PATCH 06/24] fix: revert README.md --- README.md | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 786a1bf..474176c 100644 --- a/README.md +++ b/README.md @@ -10,5 +10,33 @@ # Строение проекта: ``` - +projectwork/ +│ +├── Makefile # Сборка +├── README.md # Описание проекта +│ +├── include/ +│ ├── streebog.h # Публичный API хэш-функции +│ ├── streebog_tables.h # Таблицы констант (S-box, tau, A, C) +│ └── streebog_internal.h # Внутренние типы и макросы +│ +├── src/ +│ ├── streebog.c # Основная логика: Init / Update / Final +│ ├── streebog_compress.c # Функция сжатия g_N +│ ├── streebog_tables.c # Определения таблиц (Lookup Tables) +│ ├── streebog_transform.c # Преобразования: S, P, L, X, E (шифр) +│ └── streebog_utils.c # Вспомогательные функции (XOR, ADDC и т.д.) +│ +├── tests/ +│ ├── test_main.c # Точка входа тестов +│ ├── test_vectors_256.c # Тест-векторы для Стрибог-256 +│ ├── test_vectors_512.c # Тест-векторы для Стрибог-512 +│ └── test_vectors.h # Данные тест-векторов из ГОСТ +│ +├── tools/ +│ ├── main.c # CLI-утилита: вычисление хэша файла/строки +│ └── bench.c # Бенчмарк производительности +│ +└── docs/ + └── gost_34.11-2012.pdf # Текст стандарта (опционально) ``` From 6270275758de2bbda8d9603123e1157003e5903e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=80=D0=B0=D0=BD=20=D0=A2=D1=8E=D1=82=D0=B5?= =?UTF-8?q?=D0=BD?= Date: Thu, 12 Mar 2026 18:37:50 +0000 Subject: [PATCH 07/24] add: Makefile configuration --- Makefile | 13 + tests/tests.c | 22 + tests/unity.c | 2626 +++++++++++++++++++++++++++++++++++++++ tests/unity.h | 698 +++++++++++ tests/unity_internals.h | 1271 +++++++++++++++++++ 5 files changed, 4630 insertions(+) create mode 100644 tests/tests.c create mode 100644 tests/unity.c create mode 100644 tests/unity.h create mode 100644 tests/unity_internals.h diff --git a/Makefile b/Makefile index e69de29..c937546 100644 --- a/Makefile +++ b/Makefile @@ -0,0 +1,13 @@ +CC=gcc +CFLAGS=-I -Wall -Wextra +DEPS=tests/tests.c tests/unity.c +OUTPUT=tests/test.out + +build_test: + $(CC) -o $(OUTPUT) $(CFLAGS) $(DEPS) + +run_test: build_test + ./$(OUTPUT) + +clean_test: + rm $(OUTPUT) tests/*.exe diff --git a/tests/tests.c b/tests/tests.c new file mode 100644 index 0000000..0576cbf --- /dev/null +++ b/tests/tests.c @@ -0,0 +1,22 @@ +#include "unity.h" +#include +#include + +void setUp(void) { + // Выполняется ПЕРЕД каждым тестом +} + +void tearDown(void) { + // Выполняется ПОСЛЕ каждого теста +} + +void test256bit() { + TEST_ASSERT_EQUAL_STRING("as", "as"); + printf("Test 2 complete\n"); +} + +int main() { + UNITY_BEGIN(); + RUN_TEST(test256bit); + return UNITY_END(); +} diff --git a/tests/unity.c b/tests/unity.c new file mode 100644 index 0000000..4b1aea6 --- /dev/null +++ b/tests/unity.c @@ -0,0 +1,2626 @@ +/* ========================================================================= + 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[] = ". "; +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_RANGE_INT) == UNITY_DISPLAY_RANGE_INT) + { + 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 + { + UnityPrintNumber(number); + } + } +} + +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; + + /* print minus sign (does not handle negative zero) */ + if (number < 0.0f) + { + UNITY_OUTPUT_CHAR('-'); + number = -number; + } + + /* handle zero, NaN, and +/- infinity */ + if (number == 0.0f) + { + UnityPrint("0"); + } + else if (UNITY_IS_NAN(number)) + { + UnityPrint("nan"); + } + else if (UNITY_IS_INF(number)) + { + UnityPrint("inf"); + } + else + { + UNITY_INT32 n_int = 0; + UNITY_INT32 n; + int exponent = 0; + int decimals; + int digits; + char buf[16] = {0}; + + /* + * 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_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: + 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/unity.h b/tests/unity.h new file mode 100644 index 0000000..6310913 --- /dev/null +++ b/tests/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 2 +#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/unity_internals.h b/tests/unity_internals.h new file mode 100644 index 0000000..da17059 --- /dev/null +++ b/tests/unity_internals.h @@ -0,0 +1,1271 @@ +/* ========================================================================= + 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 + +/*------------------------------------------------------- + * Footprint + *-------------------------------------------------------*/ + +#ifndef UNITY_LINE_TYPE +#define UNITY_LINE_TYPE UNITY_UINT +#endif + +#ifndef UNITY_COUNTER_TYPE +#define UNITY_COUNTER_TYPE UNITY_UINT +#endif + +/*------------------------------------------------------- + * Internal Structs 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 + +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 +}; + +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[]; + +/*------------------------------------------------------- + * 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 From 072ecdbd74f04d6847ccb9f5614ce36f8410f5b9 Mon Sep 17 00:00:00 2001 From: Shouvi Date: Fri, 20 Mar 2026 14:01:23 +0300 Subject: [PATCH 08/24] add: init a table --- .gitignore | 4 + CMakeLists.txt | 20 +++++ Makefile | 2 +- docs/GOST_R_3411-2012.pdf | Bin 0 -> 358626 bytes include/streebog.h | 24 +++++ include/streebog_internal.h | 0 include/streebog_tables.c | 169 ++++++++++++++++++++++++++++++++++++ include/streebog_tables.h | 11 +++ tests/tests.c | 3 +- 9 files changed, 231 insertions(+), 2 deletions(-) create mode 100644 CMakeLists.txt create mode 100644 docs/GOST_R_3411-2012.pdf create mode 100644 include/streebog.h create mode 100644 include/streebog_internal.h create mode 100644 include/streebog_tables.c create mode 100644 include/streebog_tables.h diff --git a/.gitignore b/.gitignore index 845cda6..11663a3 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,7 @@ dkms.conf # debug information files *.dwo + +# Build files +build/ +.cache diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..2eeddeb --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,20 @@ +cmake_minimum_required(VERSION 3.10) + +set(CMAKE_C_STANDARD 99) +set(CMAKE_C_STANDARD_REQUIRED ON) +set(CMAKE_C_EXTENSIONS OFF) + +project(Streebog LANGUAGES C) + +enable_testing() + +# Опции компиляторы +add_compile_options(-Wall -Wall -Wextra) + +# Сборка бинарных файлов +add_executable(test_256b_vector tests/unity.c tests/tests.c) +add_executable(test_512b_vector tests/unity.c tests/tests.c) + +# Tests +add_test(NAME Test256BitVector COMMAND test_256b_vector) +add_test(NAME Test512BitVector COMMAND test_512b_vector) \ No newline at end of file diff --git a/Makefile b/Makefile index c937546..bc356e0 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ CC=gcc CFLAGS=-I -Wall -Wextra DEPS=tests/tests.c tests/unity.c -OUTPUT=tests/test.out +OUTPUT=tests/test build_test: $(CC) -o $(OUTPUT) $(CFLAGS) $(DEPS) diff --git a/docs/GOST_R_3411-2012.pdf b/docs/GOST_R_3411-2012.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7cea432466173ad4228a6d48c97a9893abdc0710 GIT binary patch literal 358626 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%0AX2nuZ%pFNwTTOO64~YUJ|m;;GCSPG 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 +#include + +#define STREEBOG_256_DIGEST_SIZE 32 /* половина размера от основной функции */ +#define STREEBOG_512_DIGEST_SIZE 64 /* байт */ +#define STREEBOG_BLOCK_SIZE 64 /* размер блока (байт — 512 бит) */ + +typedef struct { +uint8_t h[64]; /*Текущее значение хэша для 512 бит */ +uint8_t N[64]; /*Счётчик отработки битов */ +uint8_t Sigma[64]; /* контрольная сумма всех блоков */ +uint8_t buffer[64]; /*хранилище для неполных блоков */ +size_t len_buffer; +int t_size; /*256 или 512 в init */ +}streebog_ctx_t; + +void streebog_init (streebog_ctx_t *ctx, int bits); +void streebog_update(streebog_ctx_t *ctx, const uint8_t *data, size_t len); +void streebog_final (streebog_ctx_t *ctx, uint8_t *digest); + +#endif diff --git a/include/streebog_internal.h b/include/streebog_internal.h new file mode 100644 index 0000000..e69de29 diff --git a/include/streebog_tables.c b/include/streebog_tables.c new file mode 100644 index 0000000..e8df6d9 --- /dev/null +++ b/include/streebog_tables.c @@ -0,0 +1,169 @@ +#include "streebog_tables.h" + +const uint8_t pi_prime[256] = { + 252, 238, 221, 17, 207, 110, 49, + 22, 251, 196, 250, 218, 35, 197, + 4, 77, 233, 119, 240, 219, 147, + 46,153, 186, 23, 54, 241, 187, + 20, 205, 95, 193, 249, 24, 101, + 90, 226, 92, 239, 33, 129, 28, + 60, 66, 139, 1, 142,79, 5, + 132, 2, 174, 227, 106, 143, 160, + 6, 11, 237, 152, 127, 212, 211, + 31, 235, 52, 44, 81, 234, 200, + 72, 171,242, 42, 104, 162, 253, + 58, 206, 204, 181, 112, 14, 86, + 8, 12, 118, 18, 191, 114, 19, + 71, 156, 183, 93, 135, 21,161, + 150, 41, 16, 123, 154, 199, + 243, 145, 120, 111, 157, 158, + 178, 177, 50, 117, 25, 61, + 255, 53, 138, 126,109, 84, + 198, 128, 195, 189, 13, 87, + 223, 245, 36, 169, 62, 168, + 67, 201, 215, 121, 214, 246, + 124, 34, 185, 3,224, 15, + 236, 222, 122, 148, 176, 188, + 220, 232, 40, 80, 78, 51, + 10, 74, 167, 151, 96, 115, + 30, 0, 98, 68, 26,184, 56, + 130, 100, 159, 38, 65, 173, + 69, 70, 146, 39, 94, 85, + 47, 140, 163, 165, 125, 105, + 213, 149, 59, 7, 88,179, + 64, 134, 172, 29, 247, 48, + 55, 107, 228, 136, 217, 231, + 137, 225, 27, 131, 73, 76, + 63, 248, 254, 141, 83,170, + 144, 202, 216, 133, 97, 32, + 113, 103, 164, 45, 43, 9, + 91, 203, 155, 37, 208, 190, + 229, 108, 82, 89, 166,116, + 210, 230, 244, 180, 192, 209, + 102, 175, 194, 57, 75, 99, + 182 +}; + +const uint8_t Tau[64] = { + 0, 8, 16, 24, 32, 40, 48, 56, + 1 ,9, 17, 25, 33, 41,49, 57, + 2, 10,18, 26, 34, 42, 50, 58, + 3, 11, 19, 27, 35, 43, 51,59, + 4, 12, 20,28, 36, 44, 52, 60, + 5, 13, 21,29, 37, 45, 53, 61, + 6 , 14, 22, 30,38, 46, 54, 62, + 7, 15,23, 31,39, 47, 55, 63 +}; + +const uint64_t matrix_A_gf2[64] = { + 0x8e20faa72ba0b470ULL, 0x47107ddd9b505a38ULL, + 0xad08b0e0c3282d1cULL, 0xd8045870ef14980eULL, + 0x6c022c38f90a4c07ULL, 0x3601161cf705268dULL, + 0x1b8e0b0e798c13c8ULL, 0x83478b07b2468764ULL, + 0xa011d380818e8f40ULL, 0x5086e740ce47c920ULL, + 0x2843fd2067adea10ULL, 0x14aff010bdd87508ULL, + 0x0ad97808d06cb404ULL, 0x05e23c0468365a02ULL, + 0x8c711e02341b2d01ULL, 0x46b60f011a83988eULL, + 0x90dab52a387ae76fULL, 0x486dd4151c3dfdb9ULL, + 0x24b86a840e90f0d2ULL, 0x125c354207487869ULL, + 0x092e94218d243cbaULL, 0x8a174a9ec8121e5dULL, + 0x4585254f64090fa0ULL, 0xaccc9ca9328a8950ULL, + 0x9d4df05d5f661451ULL, 0xc0a878a0a1330aa6ULL, + 0x60543c50de970553ULL, 0x302a1e286fc58ca7ULL, + 0x18150f14b9ec46ddULL, 0x0c84890ad27623e0ULL, + 0x0642ca05693b9f70ULL, 0x0321658cba93c138ULL, + 0x86275df09ce8aaa8ULL, 0x439da0784e745554ULL, + 0xafc0503c273aa42aULL, 0xd960281e9d1d5215ULL, + 0xe230140fc0802984ULL, 0x71180a8960409a42ULL, + 0xb60c05ca30204d21ULL, 0x5b068c651810a89eULL, + 0x456c34887a3805b9ULL, 0xac361a443d1c8cd2ULL, + 0x561b0d22900e4669ULL, 0x2b838811480723baULL, + 0x9bcf4486248d9f5dULL, 0xc3e9224312c8c1a0ULL, + 0xeffa11af0964ee50ULL, 0xf97d86d98a327728ULL, + 0xe4fa2054a80b329cULL, 0x727d102a548b194eULL, + 0x39b008152acb8227ULL, 0x9258048415eb419dULL, + 0x492c024284fbaec0ULL, 0xaa16012142f35760ULL, + 0x550b8e9e21f7a530ULL, 0xa48b474f9ef5dc18ULL, + 0x70a6a56e2440598eULL, 0x3853dc371220a247ULL, + 0x1ca76e95091051adULL, 0x0edd37c48a08a6d8ULL, + 0x07e095624504536cULL, 0x8d70c431ac02a736ULL, + 0xc83862965601dd1bULL, 0x641c314b2b8ee083ULL +}; + + +// Итерационные константы Стрибога (ГОСТ Р 34.11-2012) +// Разбиты на 12 индексов, внутри которых 8 строк длиной 16 +const uint64_t C[12][8] = { + { // C1 + 0xb1085bda1ecadae9ULL, 0xebcb2f81c0657c1fULL, + 0xf2f6a76432e45d01ULL, 0x6714eb88d7585c4fULL, + 0xc4b7ce0919267690ULL, 0x1a2422a08a460d31ULL, + 0x505767436cc744d2ULL, 0x3dd806559f2a6450ULL + }, + { // C2 + 0x6fa3b58aa99d2f1aULL, 0x4fe39d460f70b5d7ULL, + 0xf3eeea720a232b98ULL, 0x61d55e0f16b50131ULL, + 0x9ab5176b12d69958ULL, 0xcb561c2db0aa7ca5ULL, + 0x5dda21bd7cbcd56eULL, 0x0679047021b19bb7ULL + }, + { // C3 + 0xf574dcac2bce2fc7ULL, 0x0a39fc286a3d8435ULL, + 0x06f15e5f529c1f8bULL, 0xf2ea7514b1297b7bULL, + 0xd3e20fe490359eb1ULL, 0xc1c93a376062db09ULL, + 0xc2b6f443867adb31ULL, 0x991e96f50aba0ab2ULL + }, + { // C4 + 0xef1fdb3e81566d2fULL, 0x948e1a05d71e4dd4ULL, + 0x88e857e335c3c7d9ULL, 0xd721cad685e353faULL, + 0x9d72c82ed03d675dULL, 0x8b71333935203be3ULL, + 0x453eaa193e837f12ULL, 0x020cbebc84e3d12eULL + }, + { // C5 + 0x4bea6bacad474799ULL, 0x9a3f410c6ca92363ULL, + 0x7f151c1f1686104aULL, 0x359e35d7800fffbdULL, + 0xbfcd1747253af5a3ULL, 0xdfff00b723271a16ULL, + 0x7a56a27ea9ea63f5ULL, 0x601758fd7c6cfe57ULL + }, + { // C6 + 0xae4faeae1d3ad3d9ULL, 0x6fa4c33b7a3039c0ULL, + 0x2d66c4f95142a46cULL, 0x187f9ab49af08ec6ULL, + 0xcffaa6b71c9ab7b0ULL, 0x40af21f66c2bec6bULL, + 0x6bf71c57236904f3ULL, 0x5fa68407a46647d6ULL + }, + { // C7 + 0xf4c70e16eeaac5ecULL, 0x51ac86bef2409543ULL, + 0x99ec6c7e6bf87c9dULL, 0x3473e33197a93c90ULL, + 0x992abc52d822c370ULL, 0x6476983284a05043ULL, + 0x517454ca23cf4af3ULL, 0x8886564d3a14d493ULL + }, + { // C8 + 0x9b1f5b424d93c9a7ULL, 0x03e7aa020c6e4141ULL, + 0x4eb7f8719c36de1eULL, 0x89b443b4ddbc49afULL, + 0x04892bcb929b0690ULL, 0x69d18d2bd1a5c42fULL, + 0x36acc2355951a8d9ULL, 0xa47f0dd4bf02e71eULL + }, + { // C9 + 0x378f5a541631229bULL, 0x44c9ad8ec165fde3ULL, + 0xa7d3a1b258942243ULL, 0xcd955b7e00d09848ULL, + 0x00a440bdbb2ceb17ULL, 0xb2b8a9aa6079c540ULL, + 0xe38dc92cb1f2a607ULL, 0x0261445183235adbULL + }, + { // C10 + 0xabbedea680056f52ULL, 0x382ae548b2e4f3f3ULL, + 0x8941e71cff8a78dbULL, 0x1fffe18a1b336103ULL, + 0x9fe76702af69334bULL, 0x7a1e6c303b7652f4ULL, + 0x3698fad1153bb6c3ULL, 0x74b4c7fb98459cedULL + }, + { // C11 + 0x7bcd9ed0efc889fbULL, 0x3002c6d635afe94dULL, + 0x8fa6bbbebab07612ULL, 0x0018021148466798ULL, + 0xa1d71efea48b9caeULL, 0xfbacd1d7d476e98dULL, + 0xea2594ac06fd85d6ULL, 0x0bcaa4cd81f32d1bULL + }, + { // C12 + 0x378ee767f11631baULL, 0xd21380b00449b17aULL, + 0xcda43c32bcdf1d77ULL, 0xf82012d430219f9bULL, + 0x5d80ef9d1891cc86ULL, 0xe71da4aa88e12852ULL, + 0xfaf417d5d9b21b99ULL, 0x48bc924af11bd720ULL + } +}; diff --git a/include/streebog_tables.h b/include/streebog_tables.h new file mode 100644 index 0000000..0ac94cb --- /dev/null +++ b/include/streebog_tables.h @@ -0,0 +1,11 @@ +#ifndef STREEBOG_TABLES_H +#define STREEBOG_TABLES_H + +#include + +extern const uint8_t pi_prime[256]; +extern const uint8_t Tau[64]; +extern const uint64_t matrix_A_gf2[64]; +extern const uint64_t C[12][8]; + +#endif diff --git a/tests/tests.c b/tests/tests.c index 0576cbf..22f03d3 100644 --- a/tests/tests.c +++ b/tests/tests.c @@ -1,7 +1,7 @@ #include "unity.h" #include #include - +#include "../include/streebog_tables.h" void setUp(void) { // Выполняется ПЕРЕД каждым тестом } @@ -13,6 +13,7 @@ void tearDown(void) { void test256bit() { TEST_ASSERT_EQUAL_STRING("as", "as"); printf("Test 2 complete\n"); + printf("%d",Tau[0]); } int main() { From 36a30c1bb7b75bdcaea3a4bbcc681db9f48523b4 Mon Sep 17 00:00:00 2001 From: Shouvi Date: Fri, 20 Mar 2026 23:52:17 +0300 Subject: [PATCH 09/24] add: complete include/ and refactor tests dir --- CMakeLists.txt | 4 ++-- Makefile | 13 ------------- include/streebog.h | 3 ++- include/streebog_internal.h | 17 +++++++++++++++++ src/streebog.c | 19 +++++++++++++++++++ {include => src}/streebog_tables.c | 2 +- tests/tests.c | 3 ++- tests/{ => unity}/unity.c | 0 tests/{ => unity}/unity.h | 0 tests/{ => unity}/unity_internals.h | 0 10 files changed, 43 insertions(+), 18 deletions(-) delete mode 100644 Makefile create mode 100644 src/streebog.c rename {include => src}/streebog_tables.c (99%) rename tests/{ => unity}/unity.c (100%) rename tests/{ => unity}/unity.h (100%) rename tests/{ => unity}/unity_internals.h (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2eeddeb..6d7476d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,8 +12,8 @@ enable_testing() add_compile_options(-Wall -Wall -Wextra) # Сборка бинарных файлов -add_executable(test_256b_vector tests/unity.c tests/tests.c) -add_executable(test_512b_vector tests/unity.c tests/tests.c) +add_executable(test_256b_vector tests/unity/unity.c tests/tests.c src/streebog_tables.c) +add_executable(test_512b_vector tests/unity/unity.c tests/tests.c src/streebog_tables.c) # Tests add_test(NAME Test256BitVector COMMAND test_256b_vector) diff --git a/Makefile b/Makefile deleted file mode 100644 index bc356e0..0000000 --- a/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -CC=gcc -CFLAGS=-I -Wall -Wextra -DEPS=tests/tests.c tests/unity.c -OUTPUT=tests/test - -build_test: - $(CC) -o $(OUTPUT) $(CFLAGS) $(DEPS) - -run_test: build_test - ./$(OUTPUT) - -clean_test: - rm $(OUTPUT) tests/*.exe diff --git a/include/streebog.h b/include/streebog.h index b9d90ce..df12ded 100644 --- a/include/streebog.h +++ b/include/streebog.h @@ -4,13 +4,14 @@ #include #include + #define STREEBOG_256_DIGEST_SIZE 32 /* половина размера от основной функции */ #define STREEBOG_512_DIGEST_SIZE 64 /* байт */ #define STREEBOG_BLOCK_SIZE 64 /* размер блока (байт — 512 бит) */ typedef struct { uint8_t h[64]; /*Текущее значение хэша для 512 бит */ -uint8_t N[64]; /*Счётчик отработки битов */ +uint8_t N[64]; /* Счётчик отработки битов */ uint8_t Sigma[64]; /* контрольная сумма всех блоков */ uint8_t buffer[64]; /*хранилище для неполных блоков */ size_t len_buffer; diff --git a/include/streebog_internal.h b/include/streebog_internal.h index e69de29..b7891b2 100644 --- a/include/streebog_internal.h +++ b/include/streebog_internal.h @@ -0,0 +1,17 @@ +#ifndef STREEBOG_INTERNAL_H +#define STREEBOG_INTERNAL_H + +#include +#include +#include "streebog.h" + +/* Сложение двух 512-битных чисел по модулю 2^512 */ +void add512(uint8_t *a, const uint8_t *b); + +/* XOR двух 512-битных блоков */ +void xor512(uint8_t *a, const uint8_t *b); + +/* Функция сжатия */ +void g_N(uint8_t *h, const uint8_t *N, const uint8_t *m); + +#endif \ No newline at end of file diff --git a/src/streebog.c b/src/streebog.c new file mode 100644 index 0000000..fddac13 --- /dev/null +++ b/src/streebog.c @@ -0,0 +1,19 @@ +#include "../include/streebog.h" +#include + +void streebog_init(streebog_ctx_t *ctx, int bits){ + printf("%s %d",ctx->buffer,bits); +} + +void streebog_update(streebog_ctx_t *ctx, const uint8_t *data, size_t len){ + +} + +void streebog_final(streebog_ctx_t *ctx, uint8_t *digest){ + +} + +int main(){ + streebog_ctx_t ctx; + streebog_init(&ctx, 512); +} diff --git a/include/streebog_tables.c b/src/streebog_tables.c similarity index 99% rename from include/streebog_tables.c rename to src/streebog_tables.c index e8df6d9..0ba7997 100644 --- a/include/streebog_tables.c +++ b/src/streebog_tables.c @@ -1,4 +1,4 @@ -#include "streebog_tables.h" +#include "../include/streebog_tables.h" const uint8_t pi_prime[256] = { 252, 238, 221, 17, 207, 110, 49, diff --git a/tests/tests.c b/tests/tests.c index 22f03d3..6c6ebf0 100644 --- a/tests/tests.c +++ b/tests/tests.c @@ -1,4 +1,4 @@ -#include "unity.h" +#include "unity/unity.h" #include #include #include "../include/streebog_tables.h" @@ -12,6 +12,7 @@ void tearDown(void) { void test256bit() { TEST_ASSERT_EQUAL_STRING("as", "as"); + printf("%d",Tau[2]); printf("Test 2 complete\n"); printf("%d",Tau[0]); } diff --git a/tests/unity.c b/tests/unity/unity.c similarity index 100% rename from tests/unity.c rename to tests/unity/unity.c diff --git a/tests/unity.h b/tests/unity/unity.h similarity index 100% rename from tests/unity.h rename to tests/unity/unity.h diff --git a/tests/unity_internals.h b/tests/unity/unity_internals.h similarity index 100% rename from tests/unity_internals.h rename to tests/unity/unity_internals.h From 16bdf32aa61ab978a872a85c68b94bfd8cf71747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=80=D0=B0=D0=BD=20=D0=A2=D1=8E=D1=82=D0=B5?= =?UTF-8?q?=D0=BD?= Date: Wed, 25 Mar 2026 08:18:20 +0000 Subject: [PATCH 10/24] add: Google style code and configure auto format --- .clang-format | 6 + .clang-tidy | 34 +++ .github/workflows/cmake-multi-platform.yml | 76 ++++++ .gitignore | 1 + CMakeLists.txt | 19 ++ include/streebog.h | 29 ++- include/streebog_internal.h | 7 +- include/streebog_tables.h | 6 +- src/streebog.c | 19 +- src/streebog_tables.c | 255 ++++++++------------- 10 files changed, 260 insertions(+), 192 deletions(-) create mode 100644 .clang-format create mode 100644 .clang-tidy create mode 100644 .github/workflows/cmake-multi-platform.yml diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..270d079 --- /dev/null +++ b/.clang-format @@ -0,0 +1,6 @@ +--- +BasedOnStyle: Google +IndentWidth: 2 +AllowShortFunctionsOnASingleLine: Empty +DerivePointerAlignment: false +ColumnLimit: 80 diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 0000000..302436e --- /dev/null +++ b/.clang-tidy @@ -0,0 +1,34 @@ +--- +Checks: 'readability-identifier-naming' +CheckOptions: + # Классы и структуры: PascalCase + - key: readability-identifier-naming.ClassCase + value: PascalCase + - key: readability-identifier-naming.StructCase + value: PascalCase + + # Публичные поля (в структурах): snake_case + - key: readability-identifier-naming.PublicMemberCase + value: snake_case + + # Приватные поля (в классах): snake_case_ с подчеркиванием в конце + - key: readability-identifier-naming.PrivateMemberCase + value: snake_case + - key: readability-identifier-naming.PrivateMemberSuffix + value: '_' + + # Локальные переменные: snake_case + - key: readability-identifier-naming.VariableCase + value: snake_case + + # Функции и методы: PascalCase + - key: readability-identifier-naming.FunctionCase + value: PascalCase + + # Константы (k + PascalCase) + - key: readability-identifier-naming.GlobalConstantCase + value: CamelCase + - key: readability-identifier-naming.GlobalConstantPrefix + value: 'k' + +HeaderFilterRegex: '^(src/|include/|tools/)' diff --git a/.github/workflows/cmake-multi-platform.yml b/.github/workflows/cmake-multi-platform.yml new file mode 100644 index 0000000..5865c64 --- /dev/null +++ b/.github/workflows/cmake-multi-platform.yml @@ -0,0 +1,76 @@ +# This starter workflow is for a CMake project running on multiple platforms. There is a different starter workflow if you just want a single platform. +# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml +name: CMake on multiple platforms + +on: + push: + #branches: [ "master", "module" ] + branches: [ "module" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + runs-on: ${{ matrix.os }} + + strategy: + # Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable. + fail-fast: false + + # Set up a matrix to run the following 3 configurations: + # 1. + # 2. + # 3. + # + # To add more build types (Release, Debug, RelWithDebInfo, etc.) customize the build_type list. + matrix: + os: [ubuntu-latest, windows-latest] + build_type: [Release] + c_compiler: [gcc, clang, cl] + include: + - os: windows-latest + c_compiler: cl + cpp_compiler: cl + - os: ubuntu-latest + c_compiler: gcc + cpp_compiler: g++ + - os: ubuntu-latest + c_compiler: clang + cpp_compiler: clang++ + exclude: + - os: windows-latest + c_compiler: gcc + - os: windows-latest + c_compiler: clang + - os: ubuntu-latest + c_compiler: cl + + steps: + - uses: actions/checkout@v4 + + - name: Set reusable strings + # Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file. + id: strings + shell: bash + run: | + echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: > + cmake -B ${{ steps.strings.outputs.build-output-dir }} + -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} + -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} + -S ${{ github.workspace }} + + - name: Build + # Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). + run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} + + - name: Test + working-directory: ${{ steps.strings.outputs.build-output-dir }} + # Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). + # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail + run: ctest --build-config ${{ matrix.build_type }} diff --git a/.gitignore b/.gitignore index 11663a3..2f40f33 100644 --- a/.gitignore +++ b/.gitignore @@ -57,3 +57,4 @@ dkms.conf # Build files build/ .cache +.vscode \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 6d7476d..03b9f94 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,12 +2,31 @@ cmake_minimum_required(VERSION 3.10) set(CMAKE_C_STANDARD 99) set(CMAKE_C_STANDARD_REQUIRED ON) +set(CMAKE_C_COMPILER gcc ) set(CMAKE_C_EXTENSIONS OFF) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) project(Streebog LANGUAGES C) enable_testing() +find_program(CLANG_TIDY_EXE NAMES "clang-tidy") +if(CLANG_TIDY_EXE) + set(CMAKE_C_CLANG_TIDY ${CLANG_TIDY_EXE}) +endif() + +find_program(CLANG_FORMAT_EXE NAMES "clang-format") + +if(CLANG_FORMAT_EXE) + file(GLOB_RECURSE ALL_SOURCE_FILES *.c *.h) + + add_custom_target(format + COMMAND ${CLANG_FORMAT_EXE} -i ${ALL_SOURCE_FILES} + COMMENT "Formatting code with clang-format..." + ) +endif() + + # Опции компиляторы add_compile_options(-Wall -Wall -Wextra) diff --git a/include/streebog.h b/include/streebog.h index df12ded..b5bc898 100644 --- a/include/streebog.h +++ b/include/streebog.h @@ -1,25 +1,24 @@ #ifndef STREEBOG_H #define STREEBOG_H -#include #include +#include - -#define STREEBOG_256_DIGEST_SIZE 32 /* половина размера от основной функции */ -#define STREEBOG_512_DIGEST_SIZE 64 /* байт */ -#define STREEBOG_BLOCK_SIZE 64 /* размер блока (байт — 512 бит) */ +#define STREEBOG_256_DIGEST_SIZE 32 /* половина размера от основной функции */ +#define STREEBOG_512_DIGEST_SIZE 64 /* байт */ +#define STREEBOG_BLOCK_SIZE 64 /* размер блока (байт — 512 бит) */ typedef struct { -uint8_t h[64]; /*Текущее значение хэша для 512 бит */ -uint8_t N[64]; /* Счётчик отработки битов */ -uint8_t Sigma[64]; /* контрольная сумма всех блоков */ -uint8_t buffer[64]; /*хранилище для неполных блоков */ -size_t len_buffer; -int t_size; /*256 или 512 в init */ -}streebog_ctx_t; + uint8_t h[64]; /*Текущее значение хэша для 512 бит */ + uint8_t N[64]; /* Счётчик отработки битов */ + uint8_t sigma[64]; /* контрольная сумма всех блоков */ + uint8_t buffer[64]; /*хранилище для неполных блоков */ + size_t len_buffer; + int t_size; /*256 или 512 в init */ +} streebog_ctx_t; -void streebog_init (streebog_ctx_t *ctx, int bits); -void streebog_update(streebog_ctx_t *ctx, const uint8_t *data, size_t len); -void streebog_final (streebog_ctx_t *ctx, uint8_t *digest); +void StreebogInit(streebog_ctx_t* ctx, int bits); +void StreebogUpdate(streebog_ctx_t* ctx, const uint8_t* data, size_t len); +void StreebogFinal(streebog_ctx_t* ctx, uint8_t* digest); #endif diff --git a/include/streebog_internal.h b/include/streebog_internal.h index b7891b2..d03d5d2 100644 --- a/include/streebog_internal.h +++ b/include/streebog_internal.h @@ -3,15 +3,16 @@ #include #include + #include "streebog.h" /* Сложение двух 512-битных чисел по модулю 2^512 */ -void add512(uint8_t *a, const uint8_t *b); +void Add512(uint8_t* a, const uint8_t* b); /* XOR двух 512-битных блоков */ -void xor512(uint8_t *a, const uint8_t *b); +void Xor512(uint8_t* a, const uint8_t* b); /* Функция сжатия */ -void g_N(uint8_t *h, const uint8_t *N, const uint8_t *m); +void gN(uint8_t* h, const uint8_t* N, const uint8_t* m); #endif \ No newline at end of file diff --git a/include/streebog_tables.h b/include/streebog_tables.h index 0ac94cb..d8c76fe 100644 --- a/include/streebog_tables.h +++ b/include/streebog_tables.h @@ -3,9 +3,9 @@ #include -extern const uint8_t pi_prime[256]; -extern const uint8_t Tau[64]; -extern const uint64_t matrix_A_gf2[64]; +extern const uint8_t PiPrime[256]; +extern const uint8_t Tau[64]; +extern const uint64_t MatrixAGF2[64]; extern const uint64_t C[12][8]; #endif diff --git a/src/streebog.c b/src/streebog.c index fddac13..54c0694 100644 --- a/src/streebog.c +++ b/src/streebog.c @@ -1,19 +1,16 @@ #include "../include/streebog.h" -#include -void streebog_init(streebog_ctx_t *ctx, int bits){ - printf("%s %d",ctx->buffer,bits); -} +#include -void streebog_update(streebog_ctx_t *ctx, const uint8_t *data, size_t len){ - +void StreebogInit(streebog_ctx_t* ctx, int bits) { + printf("%s %d", ctx->buffer, bits); } -void streebog_final(streebog_ctx_t *ctx, uint8_t *digest){ +void StreebogUpdate(streebog_ctx_t* ctx, const uint8_t* data, size_t len) {} -} +void StreebogFinal(streebog_ctx_t* ctx, uint8_t* digest) {} -int main(){ - streebog_ctx_t ctx; - streebog_init(&ctx, 512); +int main() { + streebog_ctx_t ctx; + StreebogInit(&ctx, 512); } diff --git a/src/streebog_tables.c b/src/streebog_tables.c index 0ba7997..12e2eac 100644 --- a/src/streebog_tables.c +++ b/src/streebog_tables.c @@ -1,169 +1,104 @@ #include "../include/streebog_tables.h" -const uint8_t pi_prime[256] = { - 252, 238, 221, 17, 207, 110, 49, - 22, 251, 196, 250, 218, 35, 197, - 4, 77, 233, 119, 240, 219, 147, - 46,153, 186, 23, 54, 241, 187, - 20, 205, 95, 193, 249, 24, 101, - 90, 226, 92, 239, 33, 129, 28, - 60, 66, 139, 1, 142,79, 5, - 132, 2, 174, 227, 106, 143, 160, - 6, 11, 237, 152, 127, 212, 211, - 31, 235, 52, 44, 81, 234, 200, - 72, 171,242, 42, 104, 162, 253, - 58, 206, 204, 181, 112, 14, 86, - 8, 12, 118, 18, 191, 114, 19, - 71, 156, 183, 93, 135, 21,161, - 150, 41, 16, 123, 154, 199, - 243, 145, 120, 111, 157, 158, - 178, 177, 50, 117, 25, 61, - 255, 53, 138, 126,109, 84, - 198, 128, 195, 189, 13, 87, - 223, 245, 36, 169, 62, 168, - 67, 201, 215, 121, 214, 246, - 124, 34, 185, 3,224, 15, - 236, 222, 122, 148, 176, 188, - 220, 232, 40, 80, 78, 51, - 10, 74, 167, 151, 96, 115, - 30, 0, 98, 68, 26,184, 56, - 130, 100, 159, 38, 65, 173, - 69, 70, 146, 39, 94, 85, - 47, 140, 163, 165, 125, 105, - 213, 149, 59, 7, 88,179, - 64, 134, 172, 29, 247, 48, - 55, 107, 228, 136, 217, 231, - 137, 225, 27, 131, 73, 76, - 63, 248, 254, 141, 83,170, - 144, 202, 216, 133, 97, 32, - 113, 103, 164, 45, 43, 9, - 91, 203, 155, 37, 208, 190, - 229, 108, 82, 89, 166,116, - 210, 230, 244, 180, 192, 209, - 102, 175, 194, 57, 75, 99, - 182 -}; - -const uint8_t Tau[64] = { - 0, 8, 16, 24, 32, 40, 48, 56, - 1 ,9, 17, 25, 33, 41,49, 57, - 2, 10,18, 26, 34, 42, 50, 58, - 3, 11, 19, 27, 35, 43, 51,59, - 4, 12, 20,28, 36, 44, 52, 60, - 5, 13, 21,29, 37, 45, 53, 61, - 6 , 14, 22, 30,38, 46, 54, 62, - 7, 15,23, 31,39, 47, 55, 63 -}; +const uint8_t PiPrime[256] = { + 252, 238, 221, 17, 207, 110, 49, 22, 251, 196, 250, 218, 35, 197, 4, + 77, 233, 119, 240, 219, 147, 46, 153, 186, 23, 54, 241, 187, 20, 205, + 95, 193, 249, 24, 101, 90, 226, 92, 239, 33, 129, 28, 60, 66, 139, + 1, 142, 79, 5, 132, 2, 174, 227, 106, 143, 160, 6, 11, 237, 152, + 127, 212, 211, 31, 235, 52, 44, 81, 234, 200, 72, 171, 242, 42, 104, + 162, 253, 58, 206, 204, 181, 112, 14, 86, 8, 12, 118, 18, 191, 114, + 19, 71, 156, 183, 93, 135, 21, 161, 150, 41, 16, 123, 154, 199, 243, + 145, 120, 111, 157, 158, 178, 177, 50, 117, 25, 61, 255, 53, 138, 126, + 109, 84, 198, 128, 195, 189, 13, 87, 223, 245, 36, 169, 62, 168, 67, + 201, 215, 121, 214, 246, 124, 34, 185, 3, 224, 15, 236, 222, 122, 148, + 176, 188, 220, 232, 40, 80, 78, 51, 10, 74, 167, 151, 96, 115, 30, + 0, 98, 68, 26, 184, 56, 130, 100, 159, 38, 65, 173, 69, 70, 146, + 39, 94, 85, 47, 140, 163, 165, 125, 105, 213, 149, 59, 7, 88, 179, + 64, 134, 172, 29, 247, 48, 55, 107, 228, 136, 217, 231, 137, 225, 27, + 131, 73, 76, 63, 248, 254, 141, 83, 170, 144, 202, 216, 133, 97, 32, + 113, 103, 164, 45, 43, 9, 91, 203, 155, 37, 208, 190, 229, 108, 82, + 89, 166, 116, 210, 230, 244, 180, 192, 209, 102, 175, 194, 57, 75, 99, + 182}; -const uint64_t matrix_A_gf2[64] = { - 0x8e20faa72ba0b470ULL, 0x47107ddd9b505a38ULL, - 0xad08b0e0c3282d1cULL, 0xd8045870ef14980eULL, - 0x6c022c38f90a4c07ULL, 0x3601161cf705268dULL, - 0x1b8e0b0e798c13c8ULL, 0x83478b07b2468764ULL, - 0xa011d380818e8f40ULL, 0x5086e740ce47c920ULL, - 0x2843fd2067adea10ULL, 0x14aff010bdd87508ULL, - 0x0ad97808d06cb404ULL, 0x05e23c0468365a02ULL, - 0x8c711e02341b2d01ULL, 0x46b60f011a83988eULL, - 0x90dab52a387ae76fULL, 0x486dd4151c3dfdb9ULL, - 0x24b86a840e90f0d2ULL, 0x125c354207487869ULL, - 0x092e94218d243cbaULL, 0x8a174a9ec8121e5dULL, - 0x4585254f64090fa0ULL, 0xaccc9ca9328a8950ULL, - 0x9d4df05d5f661451ULL, 0xc0a878a0a1330aa6ULL, - 0x60543c50de970553ULL, 0x302a1e286fc58ca7ULL, - 0x18150f14b9ec46ddULL, 0x0c84890ad27623e0ULL, - 0x0642ca05693b9f70ULL, 0x0321658cba93c138ULL, - 0x86275df09ce8aaa8ULL, 0x439da0784e745554ULL, - 0xafc0503c273aa42aULL, 0xd960281e9d1d5215ULL, - 0xe230140fc0802984ULL, 0x71180a8960409a42ULL, - 0xb60c05ca30204d21ULL, 0x5b068c651810a89eULL, - 0x456c34887a3805b9ULL, 0xac361a443d1c8cd2ULL, - 0x561b0d22900e4669ULL, 0x2b838811480723baULL, - 0x9bcf4486248d9f5dULL, 0xc3e9224312c8c1a0ULL, - 0xeffa11af0964ee50ULL, 0xf97d86d98a327728ULL, - 0xe4fa2054a80b329cULL, 0x727d102a548b194eULL, - 0x39b008152acb8227ULL, 0x9258048415eb419dULL, - 0x492c024284fbaec0ULL, 0xaa16012142f35760ULL, - 0x550b8e9e21f7a530ULL, 0xa48b474f9ef5dc18ULL, - 0x70a6a56e2440598eULL, 0x3853dc371220a247ULL, - 0x1ca76e95091051adULL, 0x0edd37c48a08a6d8ULL, - 0x07e095624504536cULL, 0x8d70c431ac02a736ULL, - 0xc83862965601dd1bULL, 0x641c314b2b8ee083ULL +const uint8_t Tau[64] = {0, 8, 16, 24, 32, 40, 48, 56, 1, 9, 17, 25, 33, +41, 49, 57, 2, 10, 18, 26, 34, 42, 50, 58, 3, 11, +19, 27, 35, 43, 51, 59, 4, 12, 20, 28, 36, 44, 52, +60, 5, 13, 21, 29, 37, 45, 53, 61, 6, 14, 22, 30, +38, 46, 54, 62, 7, 15, 23, 31, 39, 47, 55, 63 }; +const uint64_t MatrixAGF2[64] = { + 0x8e20faa72ba0b470ULL, 0x47107ddd9b505a38ULL, 0xad08b0e0c3282d1cULL, + 0xd8045870ef14980eULL, 0x6c022c38f90a4c07ULL, 0x3601161cf705268dULL, + 0x1b8e0b0e798c13c8ULL, 0x83478b07b2468764ULL, 0xa011d380818e8f40ULL, + 0x5086e740ce47c920ULL, 0x2843fd2067adea10ULL, 0x14aff010bdd87508ULL, + 0x0ad97808d06cb404ULL, 0x05e23c0468365a02ULL, 0x8c711e02341b2d01ULL, + 0x46b60f011a83988eULL, 0x90dab52a387ae76fULL, 0x486dd4151c3dfdb9ULL, + 0x24b86a840e90f0d2ULL, 0x125c354207487869ULL, 0x092e94218d243cbaULL, + 0x8a174a9ec8121e5dULL, 0x4585254f64090fa0ULL, 0xaccc9ca9328a8950ULL, + 0x9d4df05d5f661451ULL, 0xc0a878a0a1330aa6ULL, 0x60543c50de970553ULL, + 0x302a1e286fc58ca7ULL, 0x18150f14b9ec46ddULL, 0x0c84890ad27623e0ULL, + 0x0642ca05693b9f70ULL, 0x0321658cba93c138ULL, 0x86275df09ce8aaa8ULL, + 0x439da0784e745554ULL, 0xafc0503c273aa42aULL, 0xd960281e9d1d5215ULL, + 0xe230140fc0802984ULL, 0x71180a8960409a42ULL, 0xb60c05ca30204d21ULL, + 0x5b068c651810a89eULL, 0x456c34887a3805b9ULL, 0xac361a443d1c8cd2ULL, + 0x561b0d22900e4669ULL, 0x2b838811480723baULL, 0x9bcf4486248d9f5dULL, + 0xc3e9224312c8c1a0ULL, 0xeffa11af0964ee50ULL, 0xf97d86d98a327728ULL, + 0xe4fa2054a80b329cULL, 0x727d102a548b194eULL, 0x39b008152acb8227ULL, + 0x9258048415eb419dULL, 0x492c024284fbaec0ULL, 0xaa16012142f35760ULL, + 0x550b8e9e21f7a530ULL, 0xa48b474f9ef5dc18ULL, 0x70a6a56e2440598eULL, + 0x3853dc371220a247ULL, 0x1ca76e95091051adULL, 0x0edd37c48a08a6d8ULL, + 0x07e095624504536cULL, 0x8d70c431ac02a736ULL, 0xc83862965601dd1bULL, + 0x641c314b2b8ee083ULL}; // Итерационные константы Стрибога (ГОСТ Р 34.11-2012) // Разбиты на 12 индексов, внутри которых 8 строк длиной 16 const uint64_t C[12][8] = { - { // C1 - 0xb1085bda1ecadae9ULL, 0xebcb2f81c0657c1fULL, - 0xf2f6a76432e45d01ULL, 0x6714eb88d7585c4fULL, - 0xc4b7ce0919267690ULL, 0x1a2422a08a460d31ULL, - 0x505767436cc744d2ULL, 0x3dd806559f2a6450ULL - }, - { // C2 - 0x6fa3b58aa99d2f1aULL, 0x4fe39d460f70b5d7ULL, - 0xf3eeea720a232b98ULL, 0x61d55e0f16b50131ULL, - 0x9ab5176b12d69958ULL, 0xcb561c2db0aa7ca5ULL, - 0x5dda21bd7cbcd56eULL, 0x0679047021b19bb7ULL - }, - { // C3 - 0xf574dcac2bce2fc7ULL, 0x0a39fc286a3d8435ULL, - 0x06f15e5f529c1f8bULL, 0xf2ea7514b1297b7bULL, - 0xd3e20fe490359eb1ULL, 0xc1c93a376062db09ULL, - 0xc2b6f443867adb31ULL, 0x991e96f50aba0ab2ULL - }, - { // C4 - 0xef1fdb3e81566d2fULL, 0x948e1a05d71e4dd4ULL, - 0x88e857e335c3c7d9ULL, 0xd721cad685e353faULL, - 0x9d72c82ed03d675dULL, 0x8b71333935203be3ULL, - 0x453eaa193e837f12ULL, 0x020cbebc84e3d12eULL - }, - { // C5 - 0x4bea6bacad474799ULL, 0x9a3f410c6ca92363ULL, - 0x7f151c1f1686104aULL, 0x359e35d7800fffbdULL, - 0xbfcd1747253af5a3ULL, 0xdfff00b723271a16ULL, - 0x7a56a27ea9ea63f5ULL, 0x601758fd7c6cfe57ULL - }, - { // C6 - 0xae4faeae1d3ad3d9ULL, 0x6fa4c33b7a3039c0ULL, - 0x2d66c4f95142a46cULL, 0x187f9ab49af08ec6ULL, - 0xcffaa6b71c9ab7b0ULL, 0x40af21f66c2bec6bULL, - 0x6bf71c57236904f3ULL, 0x5fa68407a46647d6ULL - }, - { // C7 - 0xf4c70e16eeaac5ecULL, 0x51ac86bef2409543ULL, - 0x99ec6c7e6bf87c9dULL, 0x3473e33197a93c90ULL, - 0x992abc52d822c370ULL, 0x6476983284a05043ULL, - 0x517454ca23cf4af3ULL, 0x8886564d3a14d493ULL - }, - { // C8 - 0x9b1f5b424d93c9a7ULL, 0x03e7aa020c6e4141ULL, - 0x4eb7f8719c36de1eULL, 0x89b443b4ddbc49afULL, - 0x04892bcb929b0690ULL, 0x69d18d2bd1a5c42fULL, - 0x36acc2355951a8d9ULL, 0xa47f0dd4bf02e71eULL - }, - { // C9 - 0x378f5a541631229bULL, 0x44c9ad8ec165fde3ULL, - 0xa7d3a1b258942243ULL, 0xcd955b7e00d09848ULL, - 0x00a440bdbb2ceb17ULL, 0xb2b8a9aa6079c540ULL, - 0xe38dc92cb1f2a607ULL, 0x0261445183235adbULL - }, - { // C10 - 0xabbedea680056f52ULL, 0x382ae548b2e4f3f3ULL, - 0x8941e71cff8a78dbULL, 0x1fffe18a1b336103ULL, - 0x9fe76702af69334bULL, 0x7a1e6c303b7652f4ULL, - 0x3698fad1153bb6c3ULL, 0x74b4c7fb98459cedULL - }, - { // C11 - 0x7bcd9ed0efc889fbULL, 0x3002c6d635afe94dULL, - 0x8fa6bbbebab07612ULL, 0x0018021148466798ULL, - 0xa1d71efea48b9caeULL, 0xfbacd1d7d476e98dULL, - 0xea2594ac06fd85d6ULL, 0x0bcaa4cd81f32d1bULL - }, - { // C12 - 0x378ee767f11631baULL, 0xd21380b00449b17aULL, - 0xcda43c32bcdf1d77ULL, 0xf82012d430219f9bULL, - 0x5d80ef9d1891cc86ULL, 0xe71da4aa88e12852ULL, - 0xfaf417d5d9b21b99ULL, 0x48bc924af11bd720ULL - } -}; + {// C1 + 0xb1085bda1ecadae9ULL, 0xebcb2f81c0657c1fULL, 0xf2f6a76432e45d01ULL, + 0x6714eb88d7585c4fULL, 0xc4b7ce0919267690ULL, 0x1a2422a08a460d31ULL, + 0x505767436cc744d2ULL, 0x3dd806559f2a6450ULL}, + {// C2 + 0x6fa3b58aa99d2f1aULL, 0x4fe39d460f70b5d7ULL, 0xf3eeea720a232b98ULL, + 0x61d55e0f16b50131ULL, 0x9ab5176b12d69958ULL, 0xcb561c2db0aa7ca5ULL, + 0x5dda21bd7cbcd56eULL, 0x0679047021b19bb7ULL}, + {// C3 + 0xf574dcac2bce2fc7ULL, 0x0a39fc286a3d8435ULL, 0x06f15e5f529c1f8bULL, + 0xf2ea7514b1297b7bULL, 0xd3e20fe490359eb1ULL, 0xc1c93a376062db09ULL, + 0xc2b6f443867adb31ULL, 0x991e96f50aba0ab2ULL}, + {// C4 + 0xef1fdb3e81566d2fULL, 0x948e1a05d71e4dd4ULL, 0x88e857e335c3c7d9ULL, + 0xd721cad685e353faULL, 0x9d72c82ed03d675dULL, 0x8b71333935203be3ULL, + 0x453eaa193e837f12ULL, 0x020cbebc84e3d12eULL}, + {// C5 + 0x4bea6bacad474799ULL, 0x9a3f410c6ca92363ULL, 0x7f151c1f1686104aULL, + 0x359e35d7800fffbdULL, 0xbfcd1747253af5a3ULL, 0xdfff00b723271a16ULL, + 0x7a56a27ea9ea63f5ULL, 0x601758fd7c6cfe57ULL}, + {// C6 + 0xae4faeae1d3ad3d9ULL, 0x6fa4c33b7a3039c0ULL, 0x2d66c4f95142a46cULL, + 0x187f9ab49af08ec6ULL, 0xcffaa6b71c9ab7b0ULL, 0x40af21f66c2bec6bULL, + 0x6bf71c57236904f3ULL, 0x5fa68407a46647d6ULL}, + {// C7 + 0xf4c70e16eeaac5ecULL, 0x51ac86bef2409543ULL, 0x99ec6c7e6bf87c9dULL, + 0x3473e33197a93c90ULL, 0x992abc52d822c370ULL, 0x6476983284a05043ULL, + 0x517454ca23cf4af3ULL, 0x8886564d3a14d493ULL}, + {// C8 + 0x9b1f5b424d93c9a7ULL, 0x03e7aa020c6e4141ULL, 0x4eb7f8719c36de1eULL, + 0x89b443b4ddbc49afULL, 0x04892bcb929b0690ULL, 0x69d18d2bd1a5c42fULL, + 0x36acc2355951a8d9ULL, 0xa47f0dd4bf02e71eULL}, + {// C9 + 0x378f5a541631229bULL, 0x44c9ad8ec165fde3ULL, 0xa7d3a1b258942243ULL, + 0xcd955b7e00d09848ULL, 0x00a440bdbb2ceb17ULL, 0xb2b8a9aa6079c540ULL, + 0xe38dc92cb1f2a607ULL, 0x0261445183235adbULL}, + {// C10 + 0xabbedea680056f52ULL, 0x382ae548b2e4f3f3ULL, 0x8941e71cff8a78dbULL, + 0x1fffe18a1b336103ULL, 0x9fe76702af69334bULL, 0x7a1e6c303b7652f4ULL, + 0x3698fad1153bb6c3ULL, 0x74b4c7fb98459cedULL}, + {// C11 + 0x7bcd9ed0efc889fbULL, 0x3002c6d635afe94dULL, 0x8fa6bbbebab07612ULL, + 0x0018021148466798ULL, 0xa1d71efea48b9caeULL, 0xfbacd1d7d476e98dULL, + 0xea2594ac06fd85d6ULL, 0x0bcaa4cd81f32d1bULL}, + {// C12 + 0x378ee767f11631baULL, 0xd21380b00449b17aULL, 0xcda43c32bcdf1d77ULL, + 0xf82012d430219f9bULL, 0x5d80ef9d1891cc86ULL, 0xe71da4aa88e12852ULL, + 0xfaf417d5d9b21b99ULL, 0x48bc924af11bd720ULL}}; From b72620c8e81db0e43cd6bbff14a0bf03871605e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=80=D0=B0=D0=BD=20=D0=A2=D1=8E=D1=82=D0=B5?= =?UTF-8?q?=D0=BD?= Date: Wed, 25 Mar 2026 08:27:23 +0000 Subject: [PATCH 11/24] fix: change compiler to gcc in windows --- .github/workflows/cmake-multi-platform.yml | 14 ++------------ CMakeLists.txt | 6 +++--- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/.github/workflows/cmake-multi-platform.yml b/.github/workflows/cmake-multi-platform.yml index 5865c64..1d172f3 100644 --- a/.github/workflows/cmake-multi-platform.yml +++ b/.github/workflows/cmake-multi-platform.yml @@ -26,24 +26,14 @@ jobs: matrix: os: [ubuntu-latest, windows-latest] build_type: [Release] - c_compiler: [gcc, clang, cl] + c_compiler: [gcc] include: - os: windows-latest - c_compiler: cl - cpp_compiler: cl - - os: ubuntu-latest c_compiler: gcc cpp_compiler: g++ - os: ubuntu-latest - c_compiler: clang - cpp_compiler: clang++ - exclude: - - os: windows-latest c_compiler: gcc - - os: windows-latest - c_compiler: clang - - os: ubuntu-latest - c_compiler: cl + cpp_compiler: g++ steps: - uses: actions/checkout@v4 diff --git a/CMakeLists.txt b/CMakeLists.txt index 03b9f94..870d62b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,13 @@ cmake_minimum_required(VERSION 3.10) +project(Streebog LANGUAGES C) + set(CMAKE_C_STANDARD 99) set(CMAKE_C_STANDARD_REQUIRED ON) -set(CMAKE_C_COMPILER gcc ) +set(CMAKE_C_COMPILER gcc) set(CMAKE_C_EXTENSIONS OFF) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -project(Streebog LANGUAGES C) - enable_testing() find_program(CLANG_TIDY_EXE NAMES "clang-tidy") From 0013695be270f8c0c367223fd674dcedee5bfa40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=80=D0=B0=D0=BD=20=D0=A2=D1=8E=D1=82=D0=B5?= =?UTF-8?q?=D0=BD?= Date: Wed, 25 Mar 2026 08:31:15 +0000 Subject: [PATCH 12/24] fix: change compiler to gcc in windows --- .github/workflows/cmake-multi-platform.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake-multi-platform.yml b/.github/workflows/cmake-multi-platform.yml index 1d172f3..e733259 100644 --- a/.github/workflows/cmake-multi-platform.yml +++ b/.github/workflows/cmake-multi-platform.yml @@ -31,6 +31,7 @@ jobs: - os: windows-latest c_compiler: gcc cpp_compiler: g++ + cmake_generator: "Ninja" - os: ubuntu-latest c_compiler: gcc cpp_compiler: g++ @@ -49,7 +50,8 @@ jobs: # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type run: > - cmake -B ${{ steps.strings.outputs.build-output-dir }} + cmake -G "${{ matrix.cmake_generator }}" + -B ${{ steps.strings.outputs.build-output-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} @@ -57,7 +59,7 @@ jobs: - name: Build # Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). - run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} + run: cmake --build ${{ steps.strings.outputs.build-output-dir }} - name: Test working-directory: ${{ steps.strings.outputs.build-output-dir }} From 517103fc2b6f998bcf04e3518da129360e32b521 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=80=D0=B0=D0=BD=20=D0=A2=D1=8E=D1=82=D0=B5?= =?UTF-8?q?=D0=BD?= Date: Wed, 25 Mar 2026 08:33:09 +0000 Subject: [PATCH 13/24] fix: change compiler to gcc in windows --- .github/workflows/cmake-multi-platform.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/cmake-multi-platform.yml b/.github/workflows/cmake-multi-platform.yml index e733259..f6562a0 100644 --- a/.github/workflows/cmake-multi-platform.yml +++ b/.github/workflows/cmake-multi-platform.yml @@ -31,7 +31,6 @@ jobs: - os: windows-latest c_compiler: gcc cpp_compiler: g++ - cmake_generator: "Ninja" - os: ubuntu-latest c_compiler: gcc cpp_compiler: g++ @@ -50,7 +49,7 @@ jobs: # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type run: > - cmake -G "${{ matrix.cmake_generator }}" + cmake -G "Ninja" -B ${{ steps.strings.outputs.build-output-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} From aa2d82262fc86603910c210106009ecd14f72d1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=80=D0=B0=D0=BD=20=D0=A2=D1=8E=D1=82=D0=B5?= =?UTF-8?q?=D0=BD?= Date: Wed, 25 Mar 2026 14:18:30 +0000 Subject: [PATCH 14/24] add: write a StreebogInit function --- include/streebog.h | 2 +- src/streebog.c | 16 +++++++++++++--- test | Bin 0 -> 16032 bytes 3 files changed, 14 insertions(+), 4 deletions(-) create mode 100755 test diff --git a/include/streebog.h b/include/streebog.h index b5bc898..f1dafa8 100644 --- a/include/streebog.h +++ b/include/streebog.h @@ -17,7 +17,7 @@ typedef struct { int t_size; /*256 или 512 в init */ } streebog_ctx_t; -void StreebogInit(streebog_ctx_t* ctx, int bits); +void StreebogInit(streebog_ctx_t* ctx,int bytes); void StreebogUpdate(streebog_ctx_t* ctx, const uint8_t* data, size_t len); void StreebogFinal(streebog_ctx_t* ctx, uint8_t* digest); diff --git a/src/streebog.c b/src/streebog.c index 54c0694..6f5b6c3 100644 --- a/src/streebog.c +++ b/src/streebog.c @@ -1,9 +1,16 @@ #include "../include/streebog.h" #include +#include -void StreebogInit(streebog_ctx_t* ctx, int bits) { - printf("%s %d", ctx->buffer, bits); +void StreebogInit(streebog_ctx_t* ctx,int bytes) { + ctx->t_size = bytes; + memset(ctx->N,0,sizeof(ctx->N)); + memset(ctx->sigma,0,sizeof(ctx->sigma)); + if (ctx->t_size == 256) + memset(ctx->h,0x01, sizeof(ctx->h)); + else + memset(ctx->h,0x00, sizeof(ctx->h)); } void StreebogUpdate(streebog_ctx_t* ctx, const uint8_t* data, size_t len) {} @@ -12,5 +19,8 @@ void StreebogFinal(streebog_ctx_t* ctx, uint8_t* digest) {} int main() { streebog_ctx_t ctx; - StreebogInit(&ctx, 512); + StreebogInit(&ctx,256); + for (int i=0;i<65;i++){ + printf("%d %d %d",ctx.h[i],ctx.N[i],ctx.sigma[i]); + } } diff --git a/test b/test new file mode 100755 index 0000000000000000000000000000000000000000..04a3b50b30a72dffbdc5b20339d346761662bcd1 GIT binary patch literal 16032 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 Date: Wed, 25 Mar 2026 18:31:52 +0000 Subject: [PATCH 15/24] =?UTF-8?q?fix:=20=D0=BF=D1=80=D0=B8=D0=B2=D0=B5?= =?UTF-8?q?=D0=BB=20=D0=BA=20=D0=B5=D0=B4=D0=B8=D0=BD=D0=BE=D0=B9=20=D1=81?= =?UTF-8?q?=D0=B8=D1=81=D1=82=D0=B5=D0=BC=D1=8B=20=D0=B7=D0=B0=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D0=B8=20=D0=B1=D0=B8=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/streebog.c | 10 +++++----- test | Bin 16032 -> 0 bytes 2 files changed, 5 insertions(+), 5 deletions(-) delete mode 100755 test diff --git a/src/streebog.c b/src/streebog.c index 6f5b6c3..6b90cb0 100644 --- a/src/streebog.c +++ b/src/streebog.c @@ -5,8 +5,8 @@ void StreebogInit(streebog_ctx_t* ctx,int bytes) { ctx->t_size = bytes; - memset(ctx->N,0,sizeof(ctx->N)); - memset(ctx->sigma,0,sizeof(ctx->sigma)); + memset(ctx->N,0x00,sizeof(ctx->N)); + memset(ctx->sigma,0x00,sizeof(ctx->sigma)); if (ctx->t_size == 256) memset(ctx->h,0x01, sizeof(ctx->h)); else @@ -20,7 +20,7 @@ void StreebogFinal(streebog_ctx_t* ctx, uint8_t* digest) {} int main() { streebog_ctx_t ctx; StreebogInit(&ctx,256); - for (int i=0;i<65;i++){ - printf("%d %d %d",ctx.h[i],ctx.N[i],ctx.sigma[i]); - } + // for (int i=0;i<65;i++){ + // printf("%d %d %d",ctx.h[i],ctx.N[i],ctx.sigma[i]); + // } } diff --git a/test b/test deleted file mode 100755 index 04a3b50b30a72dffbdc5b20339d346761662bcd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16032 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 Date: Sat, 28 Mar 2026 21:16:27 +0300 Subject: [PATCH 16/24] add: added all files into project --- .clang-format | 2 +- include/streebog_internal.h | 18 +++- include/streebog_tables.h | 8 +- src/streebog.c | 40 +++++--- "src/streebog_compress.\321\201" | 16 ++++ src/streebog_tables.c | 154 ++++++++++++++----------------- src/streebog_transform.c | 27 ++++++ src/streebog_utils.c | 15 +++ 8 files changed, 173 insertions(+), 107 deletions(-) create mode 100644 "src/streebog_compress.\321\201" create mode 100644 src/streebog_transform.c create mode 100644 src/streebog_utils.c diff --git a/.clang-format b/.clang-format index 270d079..8bf89a3 100644 --- a/.clang-format +++ b/.clang-format @@ -3,4 +3,4 @@ BasedOnStyle: Google IndentWidth: 2 AllowShortFunctionsOnASingleLine: Empty DerivePointerAlignment: false -ColumnLimit: 80 +ColumnLimit: 0 diff --git a/include/streebog_internal.h b/include/streebog_internal.h index d03d5d2..20cd160 100644 --- a/include/streebog_internal.h +++ b/include/streebog_internal.h @@ -2,9 +2,6 @@ #define STREEBOG_INTERNAL_H #include -#include - -#include "streebog.h" /* Сложение двух 512-битных чисел по модулю 2^512 */ void Add512(uint8_t* a, const uint8_t* b); @@ -15,4 +12,19 @@ void Xor512(uint8_t* a, const uint8_t* b); /* Функция сжатия */ void gN(uint8_t* h, const uint8_t* N, const uint8_t* m); +// XOR с ключом +void X(uint8_t* block, const uint8_t* key); + +// байтовая подстановка +void S(uint8_t* block); + +// перестановка байт +void P(uint8_t* block); + +// линейное преобразование +void L(uint8_t* block); + +// 12 раундов X→S→P→L +void E(uint8_t* block, const uint8_t* key); + #endif \ No newline at end of file diff --git a/include/streebog_tables.h b/include/streebog_tables.h index d8c76fe..c71ca9b 100644 --- a/include/streebog_tables.h +++ b/include/streebog_tables.h @@ -3,9 +3,9 @@ #include -extern const uint8_t PiPrime[256]; -extern const uint8_t Tau[64]; -extern const uint64_t MatrixAGF2[64]; -extern const uint64_t C[12][8]; +extern const uint8_t kPiPrime[256]; +extern const uint8_t kTau[64]; +extern const uint64_t kMatrixAGF2[64]; +extern const uint64_t kC[12][8]; #endif diff --git a/src/streebog.c b/src/streebog.c index 6b90cb0..7af4904 100644 --- a/src/streebog.c +++ b/src/streebog.c @@ -1,26 +1,36 @@ #include "../include/streebog.h" - +//! После проверки не забыть удалить #include #include - -void StreebogInit(streebog_ctx_t* ctx,int bytes) { +//! +void StreebogInit(streebog_ctx_t* ctx, int bytes) { ctx->t_size = bytes; - memset(ctx->N,0x00,sizeof(ctx->N)); - memset(ctx->sigma,0x00,sizeof(ctx->sigma)); - if (ctx->t_size == 256) - memset(ctx->h,0x01, sizeof(ctx->h)); - else - memset(ctx->h,0x00, sizeof(ctx->h)); + memset(ctx->N, 0x00, sizeof(ctx->N)); + memset(ctx->sigma, 0x00, sizeof(ctx->sigma)); + if (ctx->t_size == 256) { + memset(ctx->h, 0x00, 32); + for (int i = 32; i < 64; i++) { + ctx->h[i] = 0x01; + } + } else + memset(ctx->h, 0x00, sizeof(ctx->h)); } -void StreebogUpdate(streebog_ctx_t* ctx, const uint8_t* data, size_t len) {} +void StreebogUpdate(streebog_ctx_t* ctx, const uint8_t* data, size_t len) { + printf("%p %p %llu", ctx, data, len); +} -void StreebogFinal(streebog_ctx_t* ctx, uint8_t* digest) {} +void StreebogFinal(streebog_ctx_t* ctx, uint8_t* digest) { + printf("%p %p", ctx, digest); +} +// TODO: Удалить main int main() { streebog_ctx_t ctx; - StreebogInit(&ctx,256); - // for (int i=0;i<65;i++){ - // printf("%d %d %d",ctx.h[i],ctx.N[i],ctx.sigma[i]); - // } + streebog_ctx_t ctx512b; + StreebogInit(&ctx, 256); + StreebogInit(&ctx512b, 512); + for (int i = 0; i < 64; i++) + printf("%d || %d %d %d | %d %d %d\n", i, ctx512b.h[i], ctx512b.N[i], + ctx512b.sigma[i], ctx.h[i], ctx.N[i], ctx.sigma[i]); } diff --git "a/src/streebog_compress.\321\201" "b/src/streebog_compress.\321\201" new file mode 100644 index 0000000..514c01c --- /dev/null +++ "b/src/streebog_compress.\321\201" @@ -0,0 +1,16 @@ +#include "../include/streebog_internal.h" + +//! После проверки не забыть удалить +#include +//! + +/* Сложение двух 512-битных чисел по модулю 2^512 */ +void Add512(uint8_t* a, const uint8_t* b) { +} +/* XOR двух 512-битных блоков */ +void Xor512(uint8_t* a, const uint8_t* b); + +/* Функция сжатия */ +void gN(uint8_t* h, const uint8_t* N, const uint8_t* m) { + printf("%p %p %p", h, N, m); +} \ No newline at end of file diff --git a/src/streebog_tables.c b/src/streebog_tables.c index 12e2eac..a958267 100644 --- a/src/streebog_tables.c +++ b/src/streebog_tables.c @@ -1,104 +1,90 @@ #include "../include/streebog_tables.h" -const uint8_t PiPrime[256] = { - 252, 238, 221, 17, 207, 110, 49, 22, 251, 196, 250, 218, 35, 197, 4, - 77, 233, 119, 240, 219, 147, 46, 153, 186, 23, 54, 241, 187, 20, 205, - 95, 193, 249, 24, 101, 90, 226, 92, 239, 33, 129, 28, 60, 66, 139, - 1, 142, 79, 5, 132, 2, 174, 227, 106, 143, 160, 6, 11, 237, 152, - 127, 212, 211, 31, 235, 52, 44, 81, 234, 200, 72, 171, 242, 42, 104, - 162, 253, 58, 206, 204, 181, 112, 14, 86, 8, 12, 118, 18, 191, 114, - 19, 71, 156, 183, 93, 135, 21, 161, 150, 41, 16, 123, 154, 199, 243, - 145, 120, 111, 157, 158, 178, 177, 50, 117, 25, 61, 255, 53, 138, 126, - 109, 84, 198, 128, 195, 189, 13, 87, 223, 245, 36, 169, 62, 168, 67, - 201, 215, 121, 214, 246, 124, 34, 185, 3, 224, 15, 236, 222, 122, 148, - 176, 188, 220, 232, 40, 80, 78, 51, 10, 74, 167, 151, 96, 115, 30, - 0, 98, 68, 26, 184, 56, 130, 100, 159, 38, 65, 173, 69, 70, 146, - 39, 94, 85, 47, 140, 163, 165, 125, 105, 213, 149, 59, 7, 88, 179, - 64, 134, 172, 29, 247, 48, 55, 107, 228, 136, 217, 231, 137, 225, 27, - 131, 73, 76, 63, 248, 254, 141, 83, 170, 144, 202, 216, 133, 97, 32, - 113, 103, 164, 45, 43, 9, 91, 203, 155, 37, 208, 190, 229, 108, 82, - 89, 166, 116, 210, 230, 244, 180, 192, 209, 102, 175, 194, 57, 75, 99, - 182}; +const uint8_t kPiPrime[256] = { + 252, 238, 221, 17, 207, 110, 49, 22, 251, 196, 250, 218, 35, 197, 4, 77, // + 233, 119, 240, 219, 147, 46, 153, 186, 23, 54, 241, 187, 20, 205, 95, 193, // + 249, 24, 101, 90, 226, 92, 239, 33, 129, 28, 60, 66, 139, 1, 142, 79, // + 5, 132, 2, 174, 227, 106, 143, 160, 6, 11, 237, 152, 127, 212, 211, 31, // + 235, 52, 44, 81, 234, 200, 72, 171, 242, 42, 104, 162, 253, 58, 206, 204, // + 181, 112, 14, 86, 8, 12, 118, 18, 191, 114, 19, 71, 156, 183, 93, 135, // + 21, 161, 150, 41, 16, 123, 154, 199, 243, 145, 120, 111, 157, 158, 178, 177, // + 50, 117, 25, 61, 255, 53, 138, 126, 109, 84, 198, 128, 195, 189, 13, 87, // + 223, 245, 36, 169, 62, 168, 67, 201, 215, 121, 214, 246, 124, 34, 185, 3, // + 224, 15, 236, 222, 122, 148, 176, 188, 220, 232, 40, 80, 78, 51, 10, 74, // + 167, 151, 96, 115, 30, 0, 98, 68, 26, 184, 56, 130, 100, 159, 38, 65, // + 173, 69, 70, 146, 39, 94, 85, 47, 140, 163, 165, 125, 105, 213, 149, 59, // + 7, 88, 179, 64, 134, 172, 29, 247, 48, 55, 107, 228, 136, 217, 231, 137, // + 225, 27, 131, 73, 76, 63, 248, 254, 141, 83, 170, 144, 202, 216, 133, 97, // + 32, 113, 103, 164, 45, 43, 9, 91, 203, 155, 37, 208, 190, 229, 108, 82, // + 89, 166, 116, 210, 230, 244, 180, 192, 209, 102, 175, 194, 57, 75, 99, 182 // +}; -const uint8_t Tau[64] = {0, 8, 16, 24, 32, 40, 48, 56, 1, 9, 17, 25, 33, -41, 49, 57, 2, 10, 18, 26, 34, 42, 50, 58, 3, 11, -19, 27, 35, 43, 51, 59, 4, 12, 20, 28, 36, 44, 52, -60, 5, 13, 21, 29, 37, 45, 53, 61, 6, 14, 22, 30, -38, 46, 54, 62, 7, 15, 23, 31, 39, 47, 55, 63 +const uint8_t kTau[64] = { + 0, 8, 16, 24, 32, 40, 48, 56, // + 1, 9, 17, 25, 33, 41, 49, 57, // + 2, 10, 18, 26, 34, 42, 50, 58, // + 3, 11, 19, 27, 35, 43, 51, 59, // + 4, 12, 20, 28, 36, 44, 52, 60, // + 5, 13, 21, 29, 37, 45, 53, 61, // + 6, 14, 22, 30, 38, 46, 54, 62, // + 7, 15, 23, 31, 39, 47, 55, 63 // }; -const uint64_t MatrixAGF2[64] = { - 0x8e20faa72ba0b470ULL, 0x47107ddd9b505a38ULL, 0xad08b0e0c3282d1cULL, - 0xd8045870ef14980eULL, 0x6c022c38f90a4c07ULL, 0x3601161cf705268dULL, - 0x1b8e0b0e798c13c8ULL, 0x83478b07b2468764ULL, 0xa011d380818e8f40ULL, - 0x5086e740ce47c920ULL, 0x2843fd2067adea10ULL, 0x14aff010bdd87508ULL, - 0x0ad97808d06cb404ULL, 0x05e23c0468365a02ULL, 0x8c711e02341b2d01ULL, - 0x46b60f011a83988eULL, 0x90dab52a387ae76fULL, 0x486dd4151c3dfdb9ULL, - 0x24b86a840e90f0d2ULL, 0x125c354207487869ULL, 0x092e94218d243cbaULL, - 0x8a174a9ec8121e5dULL, 0x4585254f64090fa0ULL, 0xaccc9ca9328a8950ULL, - 0x9d4df05d5f661451ULL, 0xc0a878a0a1330aa6ULL, 0x60543c50de970553ULL, - 0x302a1e286fc58ca7ULL, 0x18150f14b9ec46ddULL, 0x0c84890ad27623e0ULL, - 0x0642ca05693b9f70ULL, 0x0321658cba93c138ULL, 0x86275df09ce8aaa8ULL, - 0x439da0784e745554ULL, 0xafc0503c273aa42aULL, 0xd960281e9d1d5215ULL, - 0xe230140fc0802984ULL, 0x71180a8960409a42ULL, 0xb60c05ca30204d21ULL, - 0x5b068c651810a89eULL, 0x456c34887a3805b9ULL, 0xac361a443d1c8cd2ULL, - 0x561b0d22900e4669ULL, 0x2b838811480723baULL, 0x9bcf4486248d9f5dULL, - 0xc3e9224312c8c1a0ULL, 0xeffa11af0964ee50ULL, 0xf97d86d98a327728ULL, - 0xe4fa2054a80b329cULL, 0x727d102a548b194eULL, 0x39b008152acb8227ULL, - 0x9258048415eb419dULL, 0x492c024284fbaec0ULL, 0xaa16012142f35760ULL, - 0x550b8e9e21f7a530ULL, 0xa48b474f9ef5dc18ULL, 0x70a6a56e2440598eULL, - 0x3853dc371220a247ULL, 0x1ca76e95091051adULL, 0x0edd37c48a08a6d8ULL, - 0x07e095624504536cULL, 0x8d70c431ac02a736ULL, 0xc83862965601dd1bULL, - 0x641c314b2b8ee083ULL}; +const uint64_t kMatrixAGF2[64] = { + 0x8e20faa72ba0b470ULL, 0x47107ddd9b505a38ULL, 0xad08b0e0c3282d1cULL, 0xd8045870ef14980eULL, // + 0x6c022c38f90a4c07ULL, 0x3601161cf705268dULL, 0x1b8e0b0e798c13c8ULL, 0x83478b07b2468764ULL, // + 0xa011d380818e8f40ULL, 0x5086e740ce47c920ULL, 0x2843fd2067adea10ULL, 0x14aff010bdd87508ULL, // + 0x0ad97808d06cb404ULL, 0x05e23c0468365a02ULL, 0x8c711e02341b2d01ULL, 0x46b60f011a83988eULL, // + 0x90dab52a387ae76fULL, 0x486dd4151c3dfdb9ULL, 0x24b86a840e90f0d2ULL, 0x125c354207487869ULL, // + 0x092e94218d243cbaULL, 0x8a174a9ec8121e5dULL, 0x4585254f64090fa0ULL, 0xaccc9ca9328a8950ULL, // + 0x9d4df05d5f661451ULL, 0xc0a878a0a1330aa6ULL, 0x60543c50de970553ULL, 0x302a1e286fc58ca7ULL, // + 0x18150f14b9ec46ddULL, 0x0c84890ad27623e0ULL, 0x0642ca05693b9f70ULL, 0x0321658cba93c138ULL, // + 0x86275df09ce8aaa8ULL, 0x439da0784e745554ULL, 0xafc0503c273aa42aULL, 0xd960281e9d1d5215ULL, // + 0xe230140fc0802984ULL, 0x71180a8960409a42ULL, 0xb60c05ca30204d21ULL, 0x5b068c651810a89eULL, // + 0x456c34887a3805b9ULL, 0xac361a443d1c8cd2ULL, 0x561b0d22900e4669ULL, 0x2b838811480723baULL, // + 0x9bcf4486248d9f5dULL, 0xc3e9224312c8c1a0ULL, 0xeffa11af0964ee50ULL, 0xf97d86d98a327728ULL, // + 0xe4fa2054a80b329cULL, 0x727d102a548b194eULL, 0x39b008152acb8227ULL, 0x9258048415eb419dULL, // + 0x492c024284fbaec0ULL, 0xaa16012142f35760ULL, 0x550b8e9e21f7a530ULL, 0xa48b474f9ef5dc18ULL, // + 0x70a6a56e2440598eULL, 0x3853dc371220a247ULL, 0x1ca76e95091051adULL, 0x0edd37c48a08a6d8ULL, // + 0x07e095624504536cULL, 0x8d70c431ac02a736ULL, 0xc83862965601dd1bULL, 0x641c314b2b8ee083ULL // +}; // Итерационные константы Стрибога (ГОСТ Р 34.11-2012) // Разбиты на 12 индексов, внутри которых 8 строк длиной 16 -const uint64_t C[12][8] = { +const uint64_t kC[12][8] = { {// C1 - 0xb1085bda1ecadae9ULL, 0xebcb2f81c0657c1fULL, 0xf2f6a76432e45d01ULL, - 0x6714eb88d7585c4fULL, 0xc4b7ce0919267690ULL, 0x1a2422a08a460d31ULL, - 0x505767436cc744d2ULL, 0x3dd806559f2a6450ULL}, + 0xb1085bda1ecadae9ULL, 0xebcb2f81c0657c1fULL, 0xf2f6a76432e45d01ULL, 0x6714eb88d7585c4fULL, + 0xc4b7ce0919267690ULL, 0x1a2422a08a460d31ULL, 0x505767436cc744d2ULL, 0x3dd806559f2a6450ULL}, {// C2 - 0x6fa3b58aa99d2f1aULL, 0x4fe39d460f70b5d7ULL, 0xf3eeea720a232b98ULL, - 0x61d55e0f16b50131ULL, 0x9ab5176b12d69958ULL, 0xcb561c2db0aa7ca5ULL, - 0x5dda21bd7cbcd56eULL, 0x0679047021b19bb7ULL}, + 0x6fa3b58aa99d2f1aULL, 0x4fe39d460f70b5d7ULL, 0xf3eeea720a232b98ULL, 0x61d55e0f16b50131ULL, + 0x9ab5176b12d69958ULL, 0xcb561c2db0aa7ca5ULL, 0x5dda21bd7cbcd56eULL, 0x0679047021b19bb7ULL}, {// C3 - 0xf574dcac2bce2fc7ULL, 0x0a39fc286a3d8435ULL, 0x06f15e5f529c1f8bULL, - 0xf2ea7514b1297b7bULL, 0xd3e20fe490359eb1ULL, 0xc1c93a376062db09ULL, - 0xc2b6f443867adb31ULL, 0x991e96f50aba0ab2ULL}, + 0xf574dcac2bce2fc7ULL, 0x0a39fc286a3d8435ULL, 0x06f15e5f529c1f8bULL, 0xf2ea7514b1297b7bULL, + 0xd3e20fe490359eb1ULL, 0xc1c93a376062db09ULL, 0xc2b6f443867adb31ULL, 0x991e96f50aba0ab2ULL}, {// C4 - 0xef1fdb3e81566d2fULL, 0x948e1a05d71e4dd4ULL, 0x88e857e335c3c7d9ULL, - 0xd721cad685e353faULL, 0x9d72c82ed03d675dULL, 0x8b71333935203be3ULL, - 0x453eaa193e837f12ULL, 0x020cbebc84e3d12eULL}, + 0xef1fdb3e81566d2fULL, 0x948e1a05d71e4dd4ULL, 0x88e857e335c3c7d9ULL, 0xd721cad685e353faULL, + 0x9d72c82ed03d675dULL, 0x8b71333935203be3ULL, 0x453eaa193e837f12ULL, 0x020cbebc84e3d12eULL}, {// C5 - 0x4bea6bacad474799ULL, 0x9a3f410c6ca92363ULL, 0x7f151c1f1686104aULL, - 0x359e35d7800fffbdULL, 0xbfcd1747253af5a3ULL, 0xdfff00b723271a16ULL, - 0x7a56a27ea9ea63f5ULL, 0x601758fd7c6cfe57ULL}, + 0x4bea6bacad474799ULL, 0x9a3f410c6ca92363ULL, 0x7f151c1f1686104aULL, 0x359e35d7800fffbdULL, + 0xbfcd1747253af5a3ULL, 0xdfff00b723271a16ULL, 0x7a56a27ea9ea63f5ULL, 0x601758fd7c6cfe57ULL}, {// C6 - 0xae4faeae1d3ad3d9ULL, 0x6fa4c33b7a3039c0ULL, 0x2d66c4f95142a46cULL, - 0x187f9ab49af08ec6ULL, 0xcffaa6b71c9ab7b0ULL, 0x40af21f66c2bec6bULL, - 0x6bf71c57236904f3ULL, 0x5fa68407a46647d6ULL}, + 0xae4faeae1d3ad3d9ULL, 0x6fa4c33b7a3039c0ULL, 0x2d66c4f95142a46cULL, 0x187f9ab49af08ec6ULL, + 0xcffaa6b71c9ab7b0ULL, 0x40af21f66c2bec6bULL, 0x6bf71c57236904f3ULL, 0x5fa68407a46647d6ULL}, {// C7 - 0xf4c70e16eeaac5ecULL, 0x51ac86bef2409543ULL, 0x99ec6c7e6bf87c9dULL, - 0x3473e33197a93c90ULL, 0x992abc52d822c370ULL, 0x6476983284a05043ULL, - 0x517454ca23cf4af3ULL, 0x8886564d3a14d493ULL}, + 0xf4c70e16eeaac5ecULL, 0x51ac86bef2409543ULL, 0x99ec6c7e6bf87c9dULL, 0x3473e33197a93c90ULL, + 0x992abc52d822c370ULL, 0x6476983284a05043ULL, 0x517454ca23cf4af3ULL, 0x8886564d3a14d493ULL}, {// C8 - 0x9b1f5b424d93c9a7ULL, 0x03e7aa020c6e4141ULL, 0x4eb7f8719c36de1eULL, - 0x89b443b4ddbc49afULL, 0x04892bcb929b0690ULL, 0x69d18d2bd1a5c42fULL, - 0x36acc2355951a8d9ULL, 0xa47f0dd4bf02e71eULL}, + 0x9b1f5b424d93c9a7ULL, 0x03e7aa020c6e4141ULL, 0x4eb7f8719c36de1eULL, 0x89b443b4ddbc49afULL, + 0x04892bcb929b0690ULL, 0x69d18d2bd1a5c42fULL, 0x36acc2355951a8d9ULL, 0xa47f0dd4bf02e71eULL}, {// C9 - 0x378f5a541631229bULL, 0x44c9ad8ec165fde3ULL, 0xa7d3a1b258942243ULL, - 0xcd955b7e00d09848ULL, 0x00a440bdbb2ceb17ULL, 0xb2b8a9aa6079c540ULL, - 0xe38dc92cb1f2a607ULL, 0x0261445183235adbULL}, + 0x378f5a541631229bULL, 0x44c9ad8ec165fde3ULL, 0xa7d3a1b258942243ULL, 0xcd955b7e00d09848ULL, + 0x00a440bdbb2ceb17ULL, 0xb2b8a9aa6079c540ULL, 0xe38dc92cb1f2a607ULL, 0x0261445183235adbULL}, {// C10 - 0xabbedea680056f52ULL, 0x382ae548b2e4f3f3ULL, 0x8941e71cff8a78dbULL, - 0x1fffe18a1b336103ULL, 0x9fe76702af69334bULL, 0x7a1e6c303b7652f4ULL, - 0x3698fad1153bb6c3ULL, 0x74b4c7fb98459cedULL}, + 0xabbedea680056f52ULL, 0x382ae548b2e4f3f3ULL, 0x8941e71cff8a78dbULL, 0x1fffe18a1b336103ULL, + 0x9fe76702af69334bULL, 0x7a1e6c303b7652f4ULL, 0x3698fad1153bb6c3ULL, 0x74b4c7fb98459cedULL}, {// C11 - 0x7bcd9ed0efc889fbULL, 0x3002c6d635afe94dULL, 0x8fa6bbbebab07612ULL, - 0x0018021148466798ULL, 0xa1d71efea48b9caeULL, 0xfbacd1d7d476e98dULL, - 0xea2594ac06fd85d6ULL, 0x0bcaa4cd81f32d1bULL}, + 0x7bcd9ed0efc889fbULL, 0x3002c6d635afe94dULL, 0x8fa6bbbebab07612ULL, 0x0018021148466798ULL, + 0xa1d71efea48b9caeULL, 0xfbacd1d7d476e98dULL, 0xea2594ac06fd85d6ULL, 0x0bcaa4cd81f32d1bULL}, {// C12 - 0x378ee767f11631baULL, 0xd21380b00449b17aULL, 0xcda43c32bcdf1d77ULL, - 0xf82012d430219f9bULL, 0x5d80ef9d1891cc86ULL, 0xe71da4aa88e12852ULL, - 0xfaf417d5d9b21b99ULL, 0x48bc924af11bd720ULL}}; + 0x378ee767f11631baULL, 0xd21380b00449b17aULL, 0xcda43c32bcdf1d77ULL, 0xf82012d430219f9bULL, + 0x5d80ef9d1891cc86ULL, 0xe71da4aa88e12852ULL, 0xfaf417d5d9b21b99ULL, 0x48bc924af11bd720ULL}}; diff --git a/src/streebog_transform.c b/src/streebog_transform.c new file mode 100644 index 0000000..0156b6e --- /dev/null +++ b/src/streebog_transform.c @@ -0,0 +1,27 @@ +#include "../include/streebog_internal.h" + +//! После проверки не забыть удалить +#include +//! + +// * Математики ваша задача тут +/* XOR с ключом */ +void X(uint8_t* block, const uint8_t* key) { + printf("%p %p", block, key); +} +/* байтовая подстановка */ +void S(uint8_t* block) { + printf("%p", block); +} +/* перестановка байт */ +void P(uint8_t* block) { + printf("%p", block); +} +/* линейное преобразование */ +void L(uint8_t* block) { + printf("%p", block); +} +/* 12 раундов X→S→P→L */ +void E(uint8_t* block, const uint8_t* key) { + printf("%p %p", block, key); +} \ No newline at end of file diff --git a/src/streebog_utils.c b/src/streebog_utils.c new file mode 100644 index 0000000..41c85b2 --- /dev/null +++ b/src/streebog_utils.c @@ -0,0 +1,15 @@ +#include "../include/streebog_internal.h" + +//! После проверки не забыть удалить +#include +//! +// * Математики ваша задача тут + +/* Сложение двух 512-битных чисел по модулю 2^512 */ +void Add512(uint8_t* a, const uint8_t* b) { + printf("%p %p", a, b); +} +/* XOR двух 512-битных блоков */ +void Xor512(uint8_t* a, const uint8_t* b) { + printf("%p %p", a, b); +} \ No newline at end of file From a08530a561ac43aa23aa6c42c44b81f2b05f71ba Mon Sep 17 00:00:00 2001 From: Shadow Date: Sat, 28 Mar 2026 21:18:41 +0300 Subject: [PATCH 17/24] add: added all files into projects. Tests we write later --- tests/tests.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/tests.c b/tests/tests.c index 6c6ebf0..2f98756 100644 --- a/tests/tests.c +++ b/tests/tests.c @@ -1,7 +1,9 @@ -#include "unity/unity.h" #include #include + #include "../include/streebog_tables.h" +#include "unity/unity.h" + void setUp(void) { // Выполняется ПЕРЕД каждым тестом } @@ -12,9 +14,9 @@ void tearDown(void) { void test256bit() { TEST_ASSERT_EQUAL_STRING("as", "as"); - printf("%d",Tau[2]); + printf("%d", kTau[2]); printf("Test 2 complete\n"); - printf("%d",Tau[0]); + printf("%d", kTau[0]); } int main() { From 100a9898c8eba9875d5afd3f51f45e1fe08c7714 Mon Sep 17 00:00:00 2001 From: Shadow Date: Sun, 29 Mar 2026 23:26:10 +0300 Subject: [PATCH 18/24] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81:=20=D0=B8=D0=B7?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB=20=D1=81=20=D1=80=D1=83=D1=81?= =?UTF-8?q?=D1=81=D0=BA=D0=BE=D0=B9=20=D1=81=20=D0=BD=D0=B0=20=D0=B0=D0=BD?= =?UTF-8?q?=D0=B3=D0=BB=D0=B8=D0=B9=D1=81=D0=BA=D1=83=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 11 ++++++----- .../streebog_compress.c | 0 tools/main.c | 6 ++++++ 3 files changed, 12 insertions(+), 5 deletions(-) rename "src/streebog_compress.\321\201" => src/streebog_compress.c (100%) create mode 100644 tools/main.c diff --git a/README.md b/README.md index 474176c..337fe6d 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,10 @@ # Роли в проекте: - **Имя** - математик-программист, обеспечивает и проверяет корректность программирования математических объектов -- **Имя** - программист арифметики в конечных полях. -- **Имя** - программист всего алгоритма, включая процедуры ввода-вывода -- **Имя** - программист оболочки под DOS и Windows, сборщик программных модулей -- **Имя** - тестировщик корректности работы программы и её оптимальности. +- **Jaba** - программист арифметики в конечных полях. +- **ShowhyT** - программист всего алгоритма, включая процедуры ввода-вывода +- **Armigodf** - программист оболочки под DOS и Windows, сборщик программных модулей +- **Pomidor/ShowhyT** - тестировщик корректности работы программы и её оптимальности. # Строение проекта: ``` @@ -38,5 +38,6 @@ projectwork/ │ └── bench.c # Бенчмарк производительности │ └── docs/ - └── gost_34.11-2012.pdf # Текст стандарта (опционально) + ├── GOST_R_3411-2012.pdf # Текст стандарта + └── gost-r-34.pdf # Текст стандарта ``` diff --git "a/src/streebog_compress.\321\201" b/src/streebog_compress.c similarity index 100% rename from "src/streebog_compress.\321\201" rename to src/streebog_compress.c diff --git a/tools/main.c b/tools/main.c new file mode 100644 index 0000000..5c81424 --- /dev/null +++ b/tools/main.c @@ -0,0 +1,6 @@ +#include "../include/streebog.h" + +int main() { + streebog_ctx_t ctx; + StreebogInit(&ctx, 256); +} \ No newline at end of file From f633a799a361cd28c0b1035ca490811c4f0af265 Mon Sep 17 00:00:00 2001 From: Shadow Date: Mon, 30 Mar 2026 17:40:50 +0300 Subject: [PATCH 19/24] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81:=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4?= =?UTF-8?q?=20=D0=B2=20=D0=BA=D0=B0=D1=87=D0=B5=D1=81=D1=82=D0=B2=D0=B5=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B3=D0=BB=D1=83=D1=88=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/streebog_compress.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/streebog_compress.c b/src/streebog_compress.c index 514c01c..6e75e2f 100644 --- a/src/streebog_compress.c +++ b/src/streebog_compress.c @@ -6,9 +6,12 @@ /* Сложение двух 512-битных чисел по модулю 2^512 */ void Add512(uint8_t* a, const uint8_t* b) { + printf("%p %p", a, b); } /* XOR двух 512-битных блоков */ -void Xor512(uint8_t* a, const uint8_t* b); +void Xor512(uint8_t* a, const uint8_t* b){ + printf("%p %p", a, b); +} /* Функция сжатия */ void gN(uint8_t* h, const uint8_t* N, const uint8_t* m) { From 0b3cd416684e9037ff2858768abf15b87d85b953 Mon Sep 17 00:00:00 2001 From: ShouviT Date: Fri, 10 Apr 2026 15:22:25 +0300 Subject: [PATCH 20/24] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81:=20=D0=BD=D0=B5?= =?UTF-8?q?=D0=B1=D0=BE=D0=BB=D1=8C=D1=88=D0=BE=D0=B5=20=D1=83=D0=BB=D1=83?= =?UTF-8?q?=D1=87=D1=88=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D1=82=D0=B8=D0=BB?= =?UTF-8?q?=D1=8F,=20=D0=B4=D0=B0=D0=BB=D1=8C=D1=88=D0=B5=20=D1=81=D0=BB?= =?UTF-8?q?=D0=B8=D1=8F=D0=BD=D0=B8=D0=B5=20=D0=B2=201=20=D0=B2=D0=B5?= =?UTF-8?q?=D1=82=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/streebog.h | 2 +- include/streebog_internal.h | 16 ++++++++-------- src/streebog_compress.c | 8 ++++---- src/streebog_transform.c | 11 ++++++----- src/streebog_utils.c | 4 ++-- tests/tests.c | 4 ++-- 6 files changed, 23 insertions(+), 22 deletions(-) diff --git a/include/streebog.h b/include/streebog.h index f1dafa8..41d7699 100644 --- a/include/streebog.h +++ b/include/streebog.h @@ -17,7 +17,7 @@ typedef struct { int t_size; /*256 или 512 в init */ } streebog_ctx_t; -void StreebogInit(streebog_ctx_t* ctx,int bytes); +void StreebogInit(streebog_ctx_t* ctx, int bytes); void StreebogUpdate(streebog_ctx_t* ctx, const uint8_t* data, size_t len); void StreebogFinal(streebog_ctx_t* ctx, uint8_t* digest); diff --git a/include/streebog_internal.h b/include/streebog_internal.h index 20cd160..975d096 100644 --- a/include/streebog_internal.h +++ b/include/streebog_internal.h @@ -3,28 +3,28 @@ #include -/* Сложение двух 512-битных чисел по модулю 2^512 */ +// * Сложение двух 512-битных чисел по модулю 2^512 void Add512(uint8_t* a, const uint8_t* b); -/* XOR двух 512-битных блоков */ +// * XOR двух 512-битных блоков void Xor512(uint8_t* a, const uint8_t* b); -/* Функция сжатия */ +// * Функция сжатия void gN(uint8_t* h, const uint8_t* N, const uint8_t* m); -// XOR с ключом +// * XOR с ключом void X(uint8_t* block, const uint8_t* key); -// байтовая подстановка +// * Байтовая подстановка void S(uint8_t* block); -// перестановка байт +// * Перестановка байт void P(uint8_t* block); -// линейное преобразование +// * Линейное преобразование void L(uint8_t* block); -// 12 раундов X→S→P→L +// * 12 раундов X→S→P→L void E(uint8_t* block, const uint8_t* key); #endif \ No newline at end of file diff --git a/src/streebog_compress.c b/src/streebog_compress.c index 6e75e2f..5cd54dc 100644 --- a/src/streebog_compress.c +++ b/src/streebog_compress.c @@ -4,16 +4,16 @@ #include //! -/* Сложение двух 512-битных чисел по модулю 2^512 */ +// * Сложение двух 512-битных чисел по модулю 2^512 void Add512(uint8_t* a, const uint8_t* b) { printf("%p %p", a, b); } -/* XOR двух 512-битных блоков */ -void Xor512(uint8_t* a, const uint8_t* b){ +// * XOR двух 512-битных блоков +void Xor512(uint8_t* a, const uint8_t* b) { printf("%p %p", a, b); } -/* Функция сжатия */ +// * Функция сжатия void gN(uint8_t* h, const uint8_t* N, const uint8_t* m) { printf("%p %p %p", h, N, m); } \ No newline at end of file diff --git a/src/streebog_transform.c b/src/streebog_transform.c index 0156b6e..f2a058a 100644 --- a/src/streebog_transform.c +++ b/src/streebog_transform.c @@ -5,23 +5,24 @@ //! // * Математики ваша задача тут -/* XOR с ключом */ + +// * XOR с ключом void X(uint8_t* block, const uint8_t* key) { printf("%p %p", block, key); } -/* байтовая подстановка */ +// * Байтовая подстановка void S(uint8_t* block) { printf("%p", block); } -/* перестановка байт */ +// * Перестановка байт void P(uint8_t* block) { printf("%p", block); } -/* линейное преобразование */ +// * Линейное преобразование void L(uint8_t* block) { printf("%p", block); } -/* 12 раундов X→S→P→L */ +// * 12 раундов X→S→P→L void E(uint8_t* block, const uint8_t* key) { printf("%p %p", block, key); } \ No newline at end of file diff --git a/src/streebog_utils.c b/src/streebog_utils.c index 41c85b2..b43ae40 100644 --- a/src/streebog_utils.c +++ b/src/streebog_utils.c @@ -5,11 +5,11 @@ //! // * Математики ваша задача тут -/* Сложение двух 512-битных чисел по модулю 2^512 */ +// * Сложение двух 512-битных чисел по модулю 2^512 void Add512(uint8_t* a, const uint8_t* b) { printf("%p %p", a, b); } -/* XOR двух 512-битных блоков */ +// * XOR двух 512-битных блоков void Xor512(uint8_t* a, const uint8_t* b) { printf("%p %p", a, b); } \ No newline at end of file diff --git a/tests/tests.c b/tests/tests.c index 2f98756..3976882 100644 --- a/tests/tests.c +++ b/tests/tests.c @@ -5,11 +5,11 @@ #include "unity/unity.h" void setUp(void) { - // Выполняется ПЕРЕД каждым тестом + // ! Выполняется ПЕРЕД каждым тестом } void tearDown(void) { - // Выполняется ПОСЛЕ каждого теста + // ! Выполняется ПОСЛЕ каждого теста } void test256bit() { From 3a3f67229e1762d2cfa43e5ba92224e4e9c9e870 Mon Sep 17 00:00:00 2001 From: ShowhyT Date: Fri, 10 Apr 2026 21:37:04 +0300 Subject: [PATCH 21/24] Update team member name in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 337fe6d..c407bc2 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Работаем по проекту ГОСТ-34-11.2012 # Роли в проекте: -- **Имя** - математик-программист, обеспечивает и проверяет корректность программирования математических объектов +- **skellekroon-svg** - математик-программист, обеспечивает и проверяет корректность программирования математических объектов - **Jaba** - программист арифметики в конечных полях. - **ShowhyT** - программист всего алгоритма, включая процедуры ввода-вывода - **Armigodf** - программист оболочки под DOS и Windows, сборщик программных модулей From 38a27557978563392083be29fc9d414c6964ec0d Mon Sep 17 00:00:00 2001 From: ShouviT Date: Wed, 15 Apr 2026 21:11:34 +0300 Subject: [PATCH 22/24] =?UTF-8?q?=D1=80=D0=B5=D1=84=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D0=BD=D0=B3:=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB=20LPS,=20=D0=BF=D0=BE=D0=B4=D0=BA=D0=BE?= =?UTF-8?q?=D1=80=D1=80=D0=B5=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BB=20=D0=B8=D0=BC=D0=B5=D0=BD=D0=B0=20=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D0=BE=D0=B9.=20=D0=9F=D0=BE?= =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=D0=B8=D0=BB=20=D0=B8=D0=BD=D0=B8=D1=86?= =?UTF-8?q?=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8E=20Streeb?= =?UTF-8?q?ogInit.=20=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BB=20Xor=20=D0=B8=20Add=20512=20=D0=B1=D0=B8=D1=82?= =?UTF-8?q?=D0=BD=D1=8B=D1=85=20=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D1=83?= =?UTF-8?q?=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/streebog.h | 2 +- include/streebog_internal.h | 5 ++++- src/streebog.c | 33 +++++++++------------------------ src/streebog_compress.c | 35 +++++++++++++++++++++-------------- src/streebog_transform.c | 13 ++++++++++--- src/streebog_utils.c | 20 +++++++++++--------- ss | Bin 0 -> 16152 bytes 7 files changed, 56 insertions(+), 52 deletions(-) create mode 100755 ss diff --git a/include/streebog.h b/include/streebog.h index 41d7699..b5bc898 100644 --- a/include/streebog.h +++ b/include/streebog.h @@ -17,7 +17,7 @@ typedef struct { int t_size; /*256 или 512 в init */ } streebog_ctx_t; -void StreebogInit(streebog_ctx_t* ctx, int bytes); +void StreebogInit(streebog_ctx_t* ctx, int bits); void StreebogUpdate(streebog_ctx_t* ctx, const uint8_t* data, size_t len); void StreebogFinal(streebog_ctx_t* ctx, uint8_t* digest); diff --git a/include/streebog_internal.h b/include/streebog_internal.h index 975d096..1721759 100644 --- a/include/streebog_internal.h +++ b/include/streebog_internal.h @@ -27,4 +27,7 @@ void L(uint8_t* block); // * 12 раундов X→S→P→L void E(uint8_t* block, const uint8_t* key); -#endif \ No newline at end of file +// * L+P+S в одном +void LPS(uint8_t* block); + +#endif diff --git a/src/streebog.c b/src/streebog.c index 7af4904..b959985 100644 --- a/src/streebog.c +++ b/src/streebog.c @@ -1,19 +1,15 @@ #include "../include/streebog.h" -//! После проверки не забыть удалить +// ! После проверки не забыть удалить #include #include -//! -void StreebogInit(streebog_ctx_t* ctx, int bytes) { - ctx->t_size = bytes; - memset(ctx->N, 0x00, sizeof(ctx->N)); - memset(ctx->sigma, 0x00, sizeof(ctx->sigma)); - if (ctx->t_size == 256) { - memset(ctx->h, 0x00, 32); - for (int i = 32; i < 64; i++) { - ctx->h[i] = 0x01; - } - } else - memset(ctx->h, 0x00, sizeof(ctx->h)); +// ! +void StreebogInit(streebog_ctx_t* ctx, int bits) { + memset(ctx, 0x00, sizeof(streebog_ctx_t)); + ctx->t_size = bits; + if (bits == 256) + memset(ctx->h, 0x01, 64); + else + memset(ctx->h, 0x00, 64); } void StreebogUpdate(streebog_ctx_t* ctx, const uint8_t* data, size_t len) { @@ -23,14 +19,3 @@ void StreebogUpdate(streebog_ctx_t* ctx, const uint8_t* data, size_t len) { void StreebogFinal(streebog_ctx_t* ctx, uint8_t* digest) { printf("%p %p", ctx, digest); } - -// TODO: Удалить main -int main() { - streebog_ctx_t ctx; - streebog_ctx_t ctx512b; - StreebogInit(&ctx, 256); - StreebogInit(&ctx512b, 512); - for (int i = 0; i < 64; i++) - printf("%d || %d %d %d | %d %d %d\n", i, ctx512b.h[i], ctx512b.N[i], - ctx512b.sigma[i], ctx.h[i], ctx.N[i], ctx.sigma[i]); -} diff --git a/src/streebog_compress.c b/src/streebog_compress.c index 5cd54dc..b47ef28 100644 --- a/src/streebog_compress.c +++ b/src/streebog_compress.c @@ -1,19 +1,26 @@ #include "../include/streebog_internal.h" -//! После проверки не забыть удалить -#include -//! - -// * Сложение двух 512-битных чисел по модулю 2^512 -void Add512(uint8_t* a, const uint8_t* b) { - printf("%p %p", a, b); -} -// * XOR двух 512-битных блоков -void Xor512(uint8_t* a, const uint8_t* b) { - printf("%p %p", a, b); -} +// ! После проверки не забыть удалить +#include +#include +#include +#include +// ! // * Функция сжатия void gN(uint8_t* h, const uint8_t* N, const uint8_t* m) { - printf("%p %p %p", h, N, m); -} \ No newline at end of file + uint8_t* block = (uint8_t*)malloc(64 * sizeof(uint8_t)); // uint8_t = 8 бит, нам надо 512 бит + // Проверка на выделение памяти: + if (block == NULL) { + return; // Ошибка выделения памяти + } + memcpy(block, h, 64); // Копируем данные из h в block + // Математические преобразования: + Xor512(block, N); + LPS(block); + E(block, m); + Xor512(block, h); + Xor512(block, m); + memcpy(h, block, 64); // Копируем данные из block в h + free(block); +} diff --git a/src/streebog_transform.c b/src/streebog_transform.c index f2a058a..405ac65 100644 --- a/src/streebog_transform.c +++ b/src/streebog_transform.c @@ -1,8 +1,8 @@ #include "../include/streebog_internal.h" -//! После проверки не забыть удалить +// ! После проверки не забыть удалить #include -//! +// ! // * Математики ваша задача тут @@ -25,4 +25,11 @@ void L(uint8_t* block) { // * 12 раундов X→S→P→L void E(uint8_t* block, const uint8_t* key) { printf("%p %p", block, key); -} \ No newline at end of file +} + +// * L+P+S в одном +void LPS(uint8_t *block){ + S(block); + P(block); + L(block); +} diff --git a/src/streebog_utils.c b/src/streebog_utils.c index b43ae40..36235da 100644 --- a/src/streebog_utils.c +++ b/src/streebog_utils.c @@ -1,15 +1,17 @@ #include "../include/streebog_internal.h" -//! После проверки не забыть удалить -#include -//! -// * Математики ваша задача тут - // * Сложение двух 512-битных чисел по модулю 2^512 void Add512(uint8_t* a, const uint8_t* b) { - printf("%p %p", a, b); + uint16_t overflow = 0; // Переменная переполнения + for (int i=63;i>=0;i--) { // Идем с конца, так как a[63] - младший бит, а a[0] - старший + uint16_t sum = (uint16_t)a[i] + (uint16_t)b[i]+overflow; // Считаем сумму, предварительно преобразовав в uint16_t + a[i] = (uint8_t)(sum & 0xFF); // Выполняем операцию И, записываем последние 8 битов + overflow = sum >> 8; // Заносим в переменную значение со сдвигом вправо на 8 битов + } } -// * XOR двух 512-битных блоков + +// * XOR двух 512-битных блоков void Xor512(uint8_t* a, const uint8_t* b) { - printf("%p %p", a, b); -} \ No newline at end of file + for (int i=63;i>=0;i--) // Пробегаемся по всем массивам + a[i] ^= b[i]; // Xor в a[i] +} diff --git a/ss b/ss new file mode 100755 index 0000000000000000000000000000000000000000..2522a7c27dd6538b0e1ad20ab2b3beccc73fba80 GIT binary patch literal 16152 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 XT Date: Wed, 15 Apr 2026 21:55:05 +0300 Subject: [PATCH 23/24] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81:=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=82=D0=B5=D1=81=D1=82=D1=8B?= =?UTF-8?q?=20=D0=B4=D0=BB=D1=8F=20=D0=B8=D0=BD=D0=B8=D1=86=D0=B8=D0=B0?= =?UTF-8?q?=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B2=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 44 ++++++++++++++++++++++++++++++++------------ ss | Bin 16152 -> 0 bytes tests/tests.c | 33 ++++++++++++++++++++++++++++----- 3 files changed, 60 insertions(+), 17 deletions(-) delete mode 100755 ss diff --git a/CMakeLists.txt b/CMakeLists.txt index 870d62b..96e8071 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,38 +2,58 @@ cmake_minimum_required(VERSION 3.10) project(Streebog LANGUAGES C) +# Настройки стандарта set(CMAKE_C_STANDARD 99) set(CMAKE_C_STANDARD_REQUIRED ON) -set(CMAKE_C_COMPILER gcc) set(CMAKE_C_EXTENSIONS OFF) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +# Принудительно используем GCC, если это необходимо (хотя в NixOS лучше полагаться на окружение) +# set(CMAKE_C_COMPILER gcc) + enable_testing() +# --- Инструменты качества кода --- + +# Clang-Tidy find_program(CLANG_TIDY_EXE NAMES "clang-tidy") if(CLANG_TIDY_EXE) set(CMAKE_C_CLANG_TIDY ${CLANG_TIDY_EXE}) endif() +# Clang-Format find_program(CLANG_FORMAT_EXE NAMES "clang-format") - if(CLANG_FORMAT_EXE) - file(GLOB_RECURSE ALL_SOURCE_FILES *.c *.h) - + file(GLOB_RECURSE ALL_SOURCE_FILES src/*.c src/*.h tests/*.c tests/*.h) add_custom_target(format COMMAND ${CLANG_FORMAT_EXE} -i ${ALL_SOURCE_FILES} COMMENT "Formatting code with clang-format..." ) endif() +# --- Опции компиляции --- + +add_compile_options(-Wall -Wextra -Wpedantic) + +# Библиотека самого алгоритма +add_library(streebog_lib + src/streebog.c + src/streebog_tables.c +) + +target_include_directories(streebog_lib PUBLIC src) + +# Библиотека Unity (фреймворк для тестов) +add_library(unity_lib + tests/unity/unity.c +) +target_include_directories(unity_lib PUBLIC tests/unity) -# Опции компиляторы -add_compile_options(-Wall -Wall -Wextra) +set(TEST_TARGETS test_streebog) -# Сборка бинарных файлов -add_executable(test_256b_vector tests/unity/unity.c tests/tests.c src/streebog_tables.c) -add_executable(test_512b_vector tests/unity/unity.c tests/tests.c src/streebog_tables.c) +foreach(target ${TEST_TARGETS}) + add_executable(${target} tests/tests.c) + target_link_libraries(${target} PRIVATE streebog_lib unity_lib) +endforeach() -# Tests -add_test(NAME Test256BitVector COMMAND test_256b_vector) -add_test(NAME Test512BitVector COMMAND test_512b_vector) \ No newline at end of file +add_test(NAME StreebogInit COMMAND test_streebog) \ No newline at end of file diff --git a/ss b/ss deleted file mode 100755 index 2522a7c27dd6538b0e1ad20ab2b3beccc73fba80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16152 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 XT #include - +#include +#include #include "../include/streebog_tables.h" #include "unity/unity.h" +#include "../include/streebog.h" void setUp(void) { // ! Выполняется ПЕРЕД каждым тестом @@ -13,14 +15,35 @@ void tearDown(void) { } void test256bit() { - TEST_ASSERT_EQUAL_STRING("as", "as"); - printf("%d", kTau[2]); printf("Test 2 complete\n"); - printf("%d", kTau[0]); +} + +void TestStreebogInit256() { + streebog_ctx_t ctx; + uint8_t* testH = (uint8_t*)malloc(64); + + memset(testH, 0x01,64); + StreebogInit(&ctx,256); + TEST_ASSERT_EQUAL_UINT8_ARRAY(testH,ctx.h,64); + + printf("StreebogInit256 complete\n"); + free(testH); +} + +void TestStreebogInit512() { + streebog_ctx_t ctx; + uint8_t* testH = (uint8_t*)calloc(64,sizeof(uint8_t)); + + StreebogInit(&ctx,512); + TEST_ASSERT_EQUAL_UINT8_ARRAY(testH,ctx.h,64); + + printf("StreebogInit512 complete\n"); + free(testH); } int main() { UNITY_BEGIN(); - RUN_TEST(test256bit); + RUN_TEST(TestStreebogInit256); + RUN_TEST(TestStreebogInit512); return UNITY_END(); } From a6ac02582d28cc504c55ca4a6d1347ab65f539e4 Mon Sep 17 00:00:00 2001 From: ShouviT Date: Wed, 15 Apr 2026 21:56:59 +0300 Subject: [PATCH 24/24] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81:=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=82=D0=B5=D1=81=D1=82=D1=8B?= =?UTF-8?q?=20=D0=B4=D0=BB=D1=8F=20=D0=B8=D0=BD=D0=B8=D1=86=D0=B8=D0=B0?= =?UTF-8?q?=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B2=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 96e8071..8bdda5b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,8 +8,7 @@ set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_C_EXTENSIONS OFF) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -# Принудительно используем GCC, если это необходимо (хотя в NixOS лучше полагаться на окружение) -# set(CMAKE_C_COMPILER gcc) +set(CMAKE_C_COMPILER gcc) enable_testing() @@ -31,8 +30,6 @@ if(CLANG_FORMAT_EXE) ) endif() -# --- Опции компиляции --- - add_compile_options(-Wall -Wextra -Wpedantic) # Библиотека самого алгоритма