From f771f0b98f0279fa90e5da174be8ee0af2a7b705 Mon Sep 17 00:00:00 2001 From: jsalling Date: Thu, 29 Dec 2016 23:06:34 -0600 Subject: [PATCH 1/3] Finish cleaning up float options in testunity --- src/unity_internals.h | 1 + test/tests/testunity.c | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/unity_internals.h b/src/unity_internals.h index 34f0bd3..00d1a16 100644 --- a/src/unity_internals.h +++ b/src/unity_internals.h @@ -230,6 +230,7 @@ typedef UNITY_FLOAT_TYPE UNITY_FLOAT; #endif #ifdef UNITY_EXCLUDE_FLOAT + #undef UNITY_EXCLUDE_FLOAT_PRINT #define UNITY_EXCLUDE_FLOAT_PRINT #else #ifndef UNITY_DOUBLE_TYPE diff --git a/test/tests/testunity.c b/test/tests/testunity.c index 08c621a..3d2a366 100644 --- a/test/tests/testunity.c +++ b/test/tests/testunity.c @@ -3286,7 +3286,7 @@ void testFloatPrinting(void) void testFloatPrintingRoundTiesToEven(void) { -#if defined(UNITY_EXCLUDE_FLOAT) || !defined(USING_OUTPUT_SPY) +#if defined(UNITY_EXCLUDE_FLOAT_PRINT) || !defined(USING_OUTPUT_SPY) TEST_IGNORE(); #else #ifdef UNITY_ROUND_TIES_AWAY_FROM_ZERO @@ -3301,7 +3301,7 @@ void testFloatPrintingRoundTiesToEven(void) void testFloatPrintingInfinityAndNaN(void) { -#if defined(UNITY_EXCLUDE_FLOAT) || !defined(USING_OUTPUT_SPY) +#if defined(UNITY_EXCLUDE_FLOAT_PRINT) || !defined(USING_OUTPUT_SPY) TEST_IGNORE(); #else TEST_ASSERT_EQUAL_PRINT_FLOATING("Inf", 1.0f / f_zero); @@ -3931,7 +3931,7 @@ void testNotEqualDoubleArraysLengthZero(void) void testDoublePrinting(void) { -#if defined(UNITY_EXCLUDE_DOUBLE) || !defined(USING_OUTPUT_SPY) +#if defined(UNITY_EXCLUDE_FLOAT_PRINT) || defined(UNITY_EXCLUDE_DOUBLE) || !defined(USING_OUTPUT_SPY) TEST_IGNORE(); #else TEST_ASSERT_EQUAL_PRINT_FLOATING("0.100469", 0.10046949999999999); @@ -3953,7 +3953,7 @@ void testDoublePrinting(void) void testDoublePrintingRoundTiesToEven(void) { -#if defined(UNITY_EXCLUDE_DOUBLE) || !defined(USING_OUTPUT_SPY) +#if defined(UNITY_EXCLUDE_FLOAT_PRINT) || defined(UNITY_EXCLUDE_DOUBLE) || !defined(USING_OUTPUT_SPY) TEST_IGNORE(); #else #ifdef UNITY_ROUND_TIES_AWAY_FROM_ZERO @@ -3968,7 +3968,7 @@ void testDoublePrintingRoundTiesToEven(void) void testDoublePrintingInfinityAndNaN(void) { -#if defined(UNITY_EXCLUDE_DOUBLE) || !defined(USING_OUTPUT_SPY) +#if defined(UNITY_EXCLUDE_FLOAT_PRINT) || defined(UNITY_EXCLUDE_DOUBLE) || !defined(USING_OUTPUT_SPY) TEST_IGNORE(); #else TEST_ASSERT_EQUAL_PRINT_FLOATING("Inf", 1.0 / d_zero); From e92f2c276204507ce79e30af3a97a5957ca18383 Mon Sep 17 00:00:00 2001 From: jsalling Date: Thu, 29 Dec 2016 23:10:43 -0600 Subject: [PATCH 2/3] Update comments to reflect changes to floating point --- examples/unity_config.h | 40 ++++++++++++++-------------------------- 1 file changed, 14 insertions(+), 26 deletions(-) diff --git a/examples/unity_config.h b/examples/unity_config.h index 744be9c..355d9bf 100644 --- a/examples/unity_config.h +++ b/examples/unity_config.h @@ -1,6 +1,6 @@ /* Unity Configuration * As of May 11th, 2016 at ThrowTheSwitch/Unity commit 837c529 - * Update: August 25th, 2016 + * Update: December 29th, 2016 * See Also: Unity/docs/UnityConfigurationGuide.pdf * * Unity is designed to run on almost anything that is targeted by a C compiler. @@ -37,11 +37,6 @@ #ifndef UNITY_CONFIG_H #define UNITY_CONFIG_H -#ifdef __cplusplus -extern "C" -{ -#endif - /* ************************* AUTOMATIC INTEGER TYPES *************************** * C's concept of an integer varies from target to target. The C Standard has * rules about the `int` matching the register size of the target @@ -122,10 +117,9 @@ extern "C" /* By default, Unity guesses that you will want single precision floating point * support, but not double precision. It's easy to change either of these using - * the include and exclude options here. You may include neither, either, or - * both, as suits your needs. + * the include and exclude options here. You may include neither, just float, + * or both, as suits your needs. */ -/* #define UNITY_INCLUDE_FLOAT */ /* #define UNITY_EXCLUDE_FLOAT */ /* #define UNITY_INCLUDE_DOUBLE */ /* #define UNITY_EXCLUDE_DOUBLE */ @@ -137,18 +131,15 @@ extern "C" /* Unity aims for as small of a footprint as possible and avoids most standard * library calls (some embedded platforms don't have a standard library!). * Because of this, its routines for printing integer values are minimalist and - * hand-coded. To keep Unity universal, though, we chose to _not_ develop our - * own floating point print routines. Instead, the display of floating point - * values during a failure are optional. By default, Unity will not print the - * actual results of floating point assertion failure. So a failed assertion - * will produce a message like `"Values Not Within Delta"`. If you would like - * verbose failure messages for floating point assertions, use these options to - * give more explicit failure messages (e.g. `"Expected 4.56 Was 4.68"`). Note - * that this feature requires the use of `sprintf` so might not be desirable in - * all cases. + * hand-coded. To keep Unity universal, though, we eventually chose to develop + * our own floating point print routines. Still, the display of floating point + * values during a failure are optional. By default, Unity will print the + * actual results of floating point assertion failures. So a failed assertion + * will produce a message like "Expected 4.0 Was 4.25". If you would like less + * verbose failure messages for floating point assertions, use this option to + * give a failure message `"Values Not Within Delta"` and trim the binary size. */ -/* #define UNITY_FLOAT_VERBOSE */ -/* #define UNITY_DOUBLE_VERBOSE */ +/* #define UNITY_EXCLUDE_FLOAT_PRINT */ /* If enabled, Unity assumes you want your `FLOAT` asserts to compare standard C * floats. If your compiler supports a specialty floating point type, you can @@ -211,8 +202,8 @@ extern "C" * serial `RS232_putc()` function you wrote like thus: */ /* #define UNITY_OUTPUT_CHAR(a) RS232_putc(a) */ -/* #define UNITY_OUTPUT_FLUSH() RS232_config(115200,1,8,0) */ -/* #define UNITY_OUTPUT_START() RS232_flush() */ +/* #define UNITY_OUTPUT_FLUSH() RS232_flush() */ +/* #define UNITY_OUTPUT_START() RS232_config(115200,1,8,0) */ /* #define UNITY_OUTPUT_COMPLETE() RS232_close() */ /* For some targets, Unity can make the otherwise required `setUp()` and @@ -232,6 +223,7 @@ extern "C" */ /* #define UNITY_SUPPORT_WEAK weak */ /* #define UNITY_SUPPORT_WEAK __attribute__((weak)) */ +/* #define UNITY_NO_WEAK */ /* Some compilers require a custom attribute to be assigned to pointers, like * `near` or `far`. In these cases, you can give Unity a safe default for these @@ -242,8 +234,4 @@ extern "C" /* #define UNITY_PTR_ATTRIBUTE __attribute__((far)) */ /* #define UNITY_PTR_ATTRIBUTE near */ -#ifdef __cplusplus -} -#endif /* extern "C" */ - #endif /* UNITY_CONFIG_H */ From 4c78cde202ce7e1d77668b21c5f5968f819972b6 Mon Sep 17 00:00:00 2001 From: jsalling Date: Thu, 29 Dec 2016 23:52:03 -0600 Subject: [PATCH 3/3] Finish clean up of float support options --- src/unity.c | 2 +- src/unity_internals.h | 41 +++++++++++++++-------------------------- 2 files changed, 16 insertions(+), 27 deletions(-) diff --git a/src/unity.c b/src/unity.c index c755ebb..91ff0b9 100644 --- a/src/unity.c +++ b/src/unity.c @@ -686,6 +686,7 @@ void UnityAssertEqualIntArray(UNITY_INTERNAL_PTR expected, } /*-----------------------------------------------*/ +#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 (isinf(expected) && isinf(actual) && (isneg(expected) == isneg(actual))) return 1; \ @@ -714,7 +715,6 @@ void UnityAssertEqualIntArray(UNITY_INTERNAL_PTR expected, UnityPrint(UnityStrDelta) #endif /* UNITY_EXCLUDE_FLOAT_PRINT */ -#ifndef UNITY_EXCLUDE_FLOAT static int UnityFloatsWithin(UNITY_FLOAT delta, UNITY_FLOAT expected, UNITY_FLOAT actual) { UNITY_FLOAT diff; diff --git a/src/unity_internals.h b/src/unity_internals.h index 00d1a16..e432e25 100644 --- a/src/unity_internals.h +++ b/src/unity_internals.h @@ -168,16 +168,15 @@ #ifdef UNITY_EXCLUDE_FLOAT /* No Floating Point Support */ -#undef UNITY_INCLUDE_FLOAT -#undef UNITY_FLOAT_PRECISION -#undef UNITY_FLOAT_TYPE +#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 -#ifndef UNITY_INCLUDE_FLOAT -#define UNITY_INCLUDE_FLOAT -#endif - /* Floating Point Support */ #ifndef UNITY_FLOAT_PRECISION #define UNITY_FLOAT_PRECISION (0.00001f) @@ -212,30 +211,20 @@ typedef UNITY_FLOAT_TYPE UNITY_FLOAT; * Double Float Support *-------------------------------------------------------*/ -/* unlike FLOAT, we DON'T include by default */ -#ifndef UNITY_EXCLUDE_DOUBLE - #ifndef UNITY_INCLUDE_DOUBLE - #define UNITY_EXCLUDE_DOUBLE - #endif -#endif - -#ifdef UNITY_EXCLUDE_DOUBLE +/* unlike float, we DON'T include by default */ +#if defined(UNITY_EXCLUDE_DOUBLE) || !defined(UNITY_INCLUDE_DOUBLE) /* No Floating Point Support */ - #undef UNITY_DOUBLE_PRECISION - #undef UNITY_DOUBLE_TYPE - - #ifdef UNITY_INCLUDE_DOUBLE + #ifndef UNITY_EXCLUDE_DOUBLE + #define UNITY_EXCLUDE_DOUBLE + #else #undef UNITY_INCLUDE_DOUBLE #endif - #ifdef UNITY_EXCLUDE_FLOAT - #undef UNITY_EXCLUDE_FLOAT_PRINT - #define UNITY_EXCLUDE_FLOAT_PRINT - #else - #ifndef UNITY_DOUBLE_TYPE - #define UNITY_DOUBLE_TYPE 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