Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Unity
提交
1dfcb544
T
Third Party Unity
项目概览
OpenHarmony
/
Third Party Unity
大约 1 年 前同步成功
通知
34
Star
144
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Unity
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1dfcb544
编写于
11月 06, 2016
作者:
J
jsalling
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Start adding tests. Add const and simplify code.
上级
393f2cb5
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
51 addition
and
11 deletion
+51
-11
src/unity.c
src/unity.c
+3
-5
test/tests/testunity.c
test/tests/testunity.c
+48
-6
未找到文件。
src/unity.c
浏览文件 @
1dfcb544
...
...
@@ -284,7 +284,7 @@ void UnityPrintFloat(_UD number)
else
if
(
number
<
0
.
0000005
&&
number
>
0
)
UnityPrint
(
"0.000000..."
);
/* Small numbers */
else
if
(
number
<
4294967296
.
0
f
)
/* Rounded result fits in 32 bits, "%.6f" format */
{
_US32
divisor
=
(
1000000
/
10
);
const
_US32
divisor
=
(
1000000
/
10
);
_UU32
integer_part
=
(
_UU32
)
number
;
_US32
fraction_part
=
(
_US32
)((
number
-
integer_part
)
*
1000000
.
0
+
0
.
5
);
/* Double precision calculation gives best performance for six rounded decimal places */
...
...
@@ -300,7 +300,7 @@ void UnityPrintFloat(_UD number)
}
else
/* Number is larger, use exponential format of 9 digits, "%.8e" */
{
_US32
divisor
=
(
1000000000
/
10
);
const
_US32
divisor
=
(
1000000000
/
10
);
_US32
integer_part
;
double
divide
=
10
.
0
;
int
exponent
=
9
;
...
...
@@ -314,9 +314,7 @@ void UnityPrintFloat(_UD number)
/* Double precision calculation required for float, to produce 9 rounded digits */
UNITY_OUTPUT_CHAR
(
'0'
+
integer_part
/
divisor
);
integer_part
%=
divisor
;
divisor
/=
10
;
UnityPrintDecimalAndNumberWithLeadingZeros
(
integer_part
,
divisor
);
UnityPrintDecimalAndNumberWithLeadingZeros
(
integer_part
%
divisor
,
divisor
/
10
);
UNITY_OUTPUT_CHAR
(
'e'
);
UNITY_OUTPUT_CHAR
(
'+'
);
if
(
exponent
<
10
)
UNITY_OUTPUT_CHAR
(
'0'
);
...
...
test/tests/testunity.c
浏览文件 @
1dfcb544
...
...
@@ -3228,15 +3228,57 @@ void testNotEqualFloatArraysLengthZero(void)
#endif
}
#ifdef UNITY_FLOAT_VERBOSE
#define TEST_ASSERT_EQUAL_PRINT_FLOATING(expected, actual) { \
startPutcharSpy(); UnityPrintFloat((actual)); endPutcharSpy(); \
TEST_ASSERT_EQUAL_STRING((expected), getBufferPutcharSpy()); \
}
#endif
void
testFloatVerbosePrinting
(
void
)
{
#ifdef UNITY_FLOAT_VERBOSE
UnityPrintFloat
(
123456789
.
0
f
);
UnityPrintFloat
(
100000000
.
0
f
);
UnityPrintFloat
(
65536
.
0
f
*
65536
.
0
f
);
UnityPrintFloat
(
1000000000
.
0
f
);
UnityPrintFloat
(
10000000000
.
0
f
);
UnityPrintFloat
(
9999999000
.
0
f
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"0.0"
,
0
.
0
f
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"0.000000..."
,
0
.
0000004
99
f
);
float
smallest
=
0
.
0000005
f
;
*
(
int
*
)
&
smallest
+=
1
;
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"0.000001"
,
smallest
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"0.100469"
,
0
.
100469499
f
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"1.0"
,
0
.
9999995
f
);
/*Rounding to int place*/
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"1.0"
,
1
.
0
f
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"1.25"
,
1
.
25
f
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"7.999999"
,
7
.
999999
f
);
/*Not rounding*/
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"16.000002"
,
16
.
000002
f
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"16.000004"
,
16
.
000004
f
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"16.000006"
,
16
.
000006
f
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"4294967040.0"
,
4294967040
.
0
f
);
/*Last full print integer*/
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"4.2949673e+09"
,
4294967296
.
0
f
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"5.0e+09"
,
5000000000
.
0
f
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"8.0e+09"
,
8.0e+09
f
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"8.3099991e+09"
,
8309999104
.
0
f
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"1.0e+10"
,
1.0e+10
f
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"1.0e+10"
,
10000000000
.
0
f
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"1.00005499e+10"
,
1.000055e+10
f
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"1.10000006e+38"
,
1.10000005e+38
f
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"1.63529943e+10"
,
1.63529943e+10
f
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"3.40282347e+38"
,
3.40282346638e38
f
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"Inf"
,
3.40282346638e38
f
*
2
.
0
f
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"Inf"
,
1
.
0
f
/
f_zero
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"-Inf"
,
-
3.40282346638e38
f
*
2
.
0
f
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"NaN"
,
-
3.40282346638e38
f
*
2
.
0
f
*
f_zero
);
//Double
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"0.100469"
,
0
.
10046949999999999
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"4294967295.999999"
,
4294967295
.
999999
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"4.2949673e+09"
,
4294967296
.
0
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"7.0e+100"
,
7.0e+100
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"Inf"
,
1.7976931348623157e308
*
10
.
0
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"Inf"
,
1
.
0
/
d_zero
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"-Inf"
,
-
1.7976931348623157e308
*
10
.
0
);
TEST_ASSERT_EQUAL_PRINT_FLOATING
(
"NaN"
,
-
1.7976931348623157e308
*
10
.
0
*
d_zero
);
#endif
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录