提交 c1770535 编写于 作者: M Matias Devenuta

UnityPrintFloat(): bigger temporal buffer

With a buffer long enough, no truncation should be neccesary to format floats.

Buffer length is user settable by defining UNITY_VERBOSE_NUMBER_MAX_LENGTH,
otherwise a sensible default is used based on desired precision.

See: http://stackoverflow.com/a/7235717
上级 50259a13
...@@ -280,9 +280,18 @@ void UnityPrintMask(const _U_UINT mask, const _U_UINT number) ...@@ -280,9 +280,18 @@ void UnityPrintMask(const _U_UINT mask, const _U_UINT number)
//----------------------------------------------- //-----------------------------------------------
#ifdef UNITY_FLOAT_VERBOSE #ifdef UNITY_FLOAT_VERBOSE
#include <stdio.h> #include <stdio.h>
#ifndef UNITY_VERBOSE_NUMBER_MAX_LENGTH
# ifdef UNITY_DOUBLE_VERBOSE
# define UNITY_VERBOSE_NUMBER_MAX_LENGTH 317
# else
# define UNITY_VERBOSE_NUMBER_MAX_LENGTH 47
# endif
#endif
void UnityPrintFloat(_UF number) void UnityPrintFloat(_UF number)
{ {
char TempBuffer[32]; char TempBuffer[UNITY_VERBOSE_NUMBER_MAX_LENGTH + 1];
snprintf(TempBuffer, sizeof(TempBuffer), "%.6f", number); snprintf(TempBuffer, sizeof(TempBuffer), "%.6f", number);
UnityPrint(TempBuffer); UnityPrint(TempBuffer);
} }
......
...@@ -44,6 +44,7 @@ void tearDown(void); ...@@ -44,6 +44,7 @@ void tearDown(void);
// - define UNITY_DOUBLE_PRECISION to specify the precision to use when doing TEST_ASSERT_EQUAL_DOUBLE // - 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_DOUBLE_TYPE to specify something other than double
// - define UNITY_DOUBLE_VERBOSE to print floating point values in errors (uses sprintf) // - define UNITY_DOUBLE_VERBOSE to print floating point values in errors (uses sprintf)
// - define UNITY_VERBOSE_NUMBER_MAX_LENGTH to change maximum length of printed numbers (used by sprintf)
// Output // Output
// - by default, Unity prints to standard out with putchar. define UNITY_OUTPUT_CHAR(a) with a different function if desired // - by default, Unity prints to standard out with putchar. define UNITY_OUTPUT_CHAR(a) with a different function if desired
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册