Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
畅游知识海洋
json
提交
c46b4ea9
J
json
项目概览
畅游知识海洋
/
json
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
json
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
GitCode(gitcode.net)2024年7月9日维护升级公告
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
c46b4ea9
编写于
11月 29, 2016
作者:
N
Niels Lohmann
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
✅
more test cases
上级
50f647c8
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
111 addition
and
0 deletion
+111
-0
test/src/unit-cbor.cpp
test/src/unit-cbor.cpp
+111
-0
未找到文件。
test/src/unit-cbor.cpp
浏览文件 @
c46b4ea9
...
...
@@ -77,6 +77,41 @@ TEST_CASE("CBOR")
{
SECTION
(
"signed"
)
{
SECTION
(
"-65535..-257"
)
{
for
(
int16_t
i
=
-
65535
;
i
<=
-
257
;
++
i
)
{
CAPTURE
(
i
);
// create JSON value with integer number
json
j
=
i
;
// check type
CHECK
(
j
.
is_number_integer
());
// create expected byte vector
std
::
vector
<
uint8_t
>
expected
;
expected
.
push_back
(
static_cast
<
uint8_t
>
(
0x39
));
uint16_t
positive
=
-
1
-
i
;
expected
.
push_back
(
static_cast
<
uint8_t
>
((
positive
>>
8
)
&
0xff
));
expected
.
push_back
(
static_cast
<
uint8_t
>
(
positive
&
0xff
));
// compare result + size
const
auto
result
=
json
::
to_cbor
(
j
);
CHECK
(
result
==
expected
);
CHECK
(
result
.
size
()
==
3
);
// check individual bytes
CHECK
(
result
[
0
]
==
0x39
);
uint16_t
restored
=
static_cast
<
uint8_t
>
(
result
[
1
])
*
256
+
static_cast
<
uint8_t
>
(
result
[
2
]);
CHECK
(
restored
==
positive
);
CHECK
(
-
1
-
restored
==
i
);
// roundtrip
CHECK
(
json
::
from_cbor
(
result
)
==
j
);
}
}
SECTION
(
"-9263 (int 16)"
)
{
json
j
=
-
9263
;
...
...
@@ -214,6 +249,82 @@ TEST_CASE("CBOR")
}
}
SECTION
(
"256..65535"
)
{
for
(
size_t
i
=
256
;
i
<=
65535
;
++
i
)
{
CAPTURE
(
i
);
// create JSON value with integer number
json
j
=
-
1
;
j
.
get_ref
<
json
::
number_integer_t
&>
()
=
static_cast
<
json
::
number_integer_t
>
(
i
);
// check type
CHECK
(
j
.
is_number_integer
());
// create expected byte vector
std
::
vector
<
uint8_t
>
expected
;
expected
.
push_back
(
static_cast
<
uint8_t
>
(
0x19
));
expected
.
push_back
(
static_cast
<
uint8_t
>
((
i
>>
8
)
&
0xff
));
expected
.
push_back
(
static_cast
<
uint8_t
>
(
i
&
0xff
));
// compare result + size
const
auto
result
=
json
::
to_cbor
(
j
);
CHECK
(
result
==
expected
);
CHECK
(
result
.
size
()
==
3
);
// check individual bytes
CHECK
(
result
[
0
]
==
0x19
);
uint16_t
restored
=
static_cast
<
uint8_t
>
(
result
[
1
])
*
256
+
static_cast
<
uint8_t
>
(
result
[
2
]);
CHECK
(
restored
==
i
);
// roundtrip
CHECK
(
json
::
from_cbor
(
result
)
==
j
);
}
}
SECTION
(
"65536..4294967295"
)
{
for
(
uint32_t
i
:
{
65536u
,
77777u
,
1048576u
})
{
CAPTURE
(
i
);
// create JSON value with integer number
json
j
=
-
1
;
j
.
get_ref
<
json
::
number_integer_t
&>
()
=
static_cast
<
json
::
number_integer_t
>
(
i
);
// check type
CHECK
(
j
.
is_number_integer
());
// create expected byte vector
std
::
vector
<
uint8_t
>
expected
;
expected
.
push_back
(
0x1a
);
expected
.
push_back
(
static_cast
<
uint8_t
>
((
i
>>
24
)
&
0xff
));
expected
.
push_back
(
static_cast
<
uint8_t
>
((
i
>>
16
)
&
0xff
));
expected
.
push_back
(
static_cast
<
uint8_t
>
((
i
>>
8
)
&
0xff
));
expected
.
push_back
(
static_cast
<
uint8_t
>
(
i
&
0xff
));
// compare result + size
const
auto
result
=
json
::
to_cbor
(
j
);
CHECK
(
result
==
expected
);
CHECK
(
result
.
size
()
==
5
);
// check individual bytes
CHECK
(
result
[
0
]
==
0x1a
);
uint32_t
restored
=
static_cast
<
uint32_t
>
((
static_cast
<
uint32_t
>
(
result
[
1
])
<<
030
)
+
(
static_cast
<
uint32_t
>
(
result
[
2
])
<<
020
)
+
(
static_cast
<
uint32_t
>
(
result
[
3
])
<<
010
)
+
static_cast
<
uint32_t
>
(
result
[
4
]));
CHECK
(
restored
==
i
);
// roundtrip
CHECK
(
json
::
from_cbor
(
result
)
==
j
);
}
}
/*
SECTION("-32768..-129 (int 16)")
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录