Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Unity
提交
5db2a3db
T
Third Party Unity
项目概览
OpenHarmony
/
Third Party Unity
1 年多 前同步成功
通知
36
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看板
提交
5db2a3db
编写于
12月 09, 2018
作者:
E
Elliot Gawthrop
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add support for strings in TEST_CASE()
上级
f433480f
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
75 addition
and
1 deletion
+75
-1
auto/generate_test_runner.rb
auto/generate_test_runner.rb
+14
-1
test/tests/testparameterized.c
test/tests/testparameterized.c
+61
-0
未找到文件。
auto/generate_test_runner.rb
浏览文件 @
5db2a3db
...
...
@@ -90,12 +90,25 @@ class UnityTestRunnerGenerator
def
find_tests
(
source
)
tests_and_line_numbers
=
[]
# contains characters which will be substituted from within strings, doing
# this prevents these characters from interferring with scrubbers
# @ is not a valid C character, so there should be no clashes with files genuinely containing these markers
substring_subs
=
{
'{'
=>
'@co@'
,
'}'
=>
'@cc@'
,
';'
=>
'@ss@'
,
'/'
=>
'@fs@'
}
substring_re
=
Regexp
.
union
(
substring_subs
.
keys
)
substring_unsubs
=
substring_subs
.
invert
# the inverse map will be used to fix the strings afterwords
substring_unsubs
[
'@quote@'
]
=
'\\"'
substring_unsubs
[
'@apos@'
]
=
'\\\''
substring_unre
=
Regexp
.
union
(
substring_unsubs
.
keys
)
source_scrubbed
=
source
.
clone
source_scrubbed
=
source_scrubbed
.
gsub
(
/"[^"\n]*"/
,
''
)
# remove things in strings
source_scrubbed
=
source_scrubbed
.
gsub
(
/\\"/
,
'@quote@'
)
# hide escaped quotes to allow capture of the full string/char
source_scrubbed
=
source_scrubbed
.
gsub
(
/\\'/
,
'@apos@'
)
# hide escaped apostrophes to allow capture of the full string/char
source_scrubbed
=
source_scrubbed
.
gsub
(
/("[^"\n]*")|('[^'\n]*')/
)
{
|
s
|
s
.
gsub
(
substring_re
,
substring_subs
)
}
# temporarily hide problematic
# characters within strings
source_scrubbed
=
source_scrubbed
.
gsub
(
/\/\/.*$/
,
''
)
# remove line comments
source_scrubbed
=
source_scrubbed
.
gsub
(
/\/\*.*?\*\//m
,
''
)
# remove block comments
lines
=
source_scrubbed
.
split
(
/(^\s*\#.*$) # Treat preprocessor directives as a logical line
| (;|\{|\}) /x
)
# Match ;, {, and } as end of lines
.
map
{
|
line
|
line
.
gsub
(
substring_unre
,
substring_unsubs
)
}
# unhide the problematic characters previously removed
lines
.
each_with_index
do
|
line
,
_index
|
# find tests
...
...
test/tests/testparameterized.c
浏览文件 @
5db2a3db
...
...
@@ -46,6 +46,14 @@ void flushSpy(void) {}
int
SetToOneToFailInTearDown
;
int
SetToOneMeanWeAlreadyCheckedThisGuy
;
static
unsigned
NextExpectedStringIndex
;
static
unsigned
NextExpectedCharIndex
;
void
suiteSetUp
(
void
)
{
NextExpectedStringIndex
=
0
;
NextExpectedCharIndex
=
0
;
}
void
setUp
(
void
)
{
...
...
@@ -111,3 +119,56 @@ void test_NormalFailsStillWork(void)
TEST_ASSERT_TRUE
(
0
);
VERIFY_FAILS_END
}
TEST_CASE
(
0
,
"abc"
)
TEST_CASE
(
1
,
"{"
)
TEST_CASE
(
2
,
"}"
)
TEST_CASE
(
3
,
";"
)
TEST_CASE
(
4
,
"
\"
quoted
\"
"
)
void
test_StringsArePreserved
(
unsigned
index
,
const
char
*
str
)
{
static
const
char
*
const
expected
[]
=
{
"abc"
,
"{"
,
"}"
,
";"
,
"
\"
quoted
\"
"
};
/* Ensure that no test cases are skipped by tracking the next expected index */
TEST_ASSERT_EQUAL_UINT32
(
NextExpectedStringIndex
,
index
);
TEST_ASSERT_LESS_THAN
(
sizeof
(
expected
)
/
sizeof
(
expected
[
0
]),
index
);
TEST_ASSERT_EQUAL_STRING
(
expected
[
index
],
str
);
NextExpectedStringIndex
++
;
}
TEST_CASE
(
0
,
'x'
)
TEST_CASE
(
1
,
'{'
)
TEST_CASE
(
2
,
'}'
)
TEST_CASE
(
3
,
';'
)
TEST_CASE
(
4
,
'\''
)
TEST_CASE
(
5
,
'"'
)
void
test_CharsArePreserved
(
unsigned
index
,
char
c
)
{
static
const
char
expected
[]
=
{
'x'
,
'{'
,
'}'
,
';'
,
'\''
,
'"'
};
/* Ensure that no test cases are skipped by tracking the next expected index */
TEST_ASSERT_EQUAL_UINT32
(
NextExpectedCharIndex
,
index
);
TEST_ASSERT_LESS_THAN
(
sizeof
(
expected
)
/
sizeof
(
expected
[
0
]),
index
);
TEST_ASSERT_EQUAL
(
expected
[
index
],
c
);
NextExpectedCharIndex
++
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录