Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
62b60991
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
62b60991
编写于
1月 03, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add encode test
上级
eaca069a
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
170 addition
and
0 deletion
+170
-0
source/util/test/CMakeLists.txt
source/util/test/CMakeLists.txt
+4
-0
source/util/test/encodeTest.cpp
source/util/test/encodeTest.cpp
+166
-0
未找到文件。
source/util/test/CMakeLists.txt
浏览文件 @
62b60991
...
...
@@ -41,4 +41,8 @@ target_sources(freelistTest
)
target_link_libraries
(
freelistTest os util gtest gtest_main
)
# encodeTest
add_executable
(
encodeTest
"encodeTest.cpp"
)
target_link_libraries
(
encodeTest os util gtest gtest_main
)
source/util/test/encodeTest.cpp
0 → 100644
浏览文件 @
62b60991
#include <iostream>
#include "gtest/gtest.h"
#include "encode.h"
#define BUF_SIZE 64
td_endian_t
endian_arr
[
2
]
=
{
TD_LITTLE_ENDIAN
,
TD_BIG_ENDIAN
};
static
int
encode
(
SCoder
*
pCoder
,
int8_t
val
)
{
return
tEncodeI8
(
pCoder
,
val
);
}
static
int
encode
(
SCoder
*
pCoder
,
uint8_t
val
)
{
return
tEncodeU8
(
pCoder
,
val
);
}
static
int
encode
(
SCoder
*
pCoder
,
int16_t
val
)
{
return
tEncodeI16
(
pCoder
,
val
);
}
static
int
encode
(
SCoder
*
pCoder
,
uint16_t
val
)
{
return
tEncodeU16
(
pCoder
,
val
);
}
static
int
encode
(
SCoder
*
pCoder
,
int32_t
val
)
{
return
tEncodeI32
(
pCoder
,
val
);
}
static
int
encode
(
SCoder
*
pCoder
,
uint32_t
val
)
{
return
tEncodeU32
(
pCoder
,
val
);
}
static
int
encode
(
SCoder
*
pCoder
,
int64_t
val
)
{
return
tEncodeI64
(
pCoder
,
val
);
}
static
int
encode
(
SCoder
*
pCoder
,
uint64_t
val
)
{
return
tEncodeU64
(
pCoder
,
val
);
}
static
int
decode
(
SCoder
*
pCoder
,
int8_t
*
val
)
{
return
tDecodeI8
(
pCoder
,
val
);
}
static
int
decode
(
SCoder
*
pCoder
,
uint8_t
*
val
)
{
return
tDecodeU8
(
pCoder
,
val
);
}
static
int
decode
(
SCoder
*
pCoder
,
int16_t
*
val
)
{
return
tDecodeI16
(
pCoder
,
val
);
}
static
int
decode
(
SCoder
*
pCoder
,
uint16_t
*
val
)
{
return
tDecodeU16
(
pCoder
,
val
);
}
static
int
decode
(
SCoder
*
pCoder
,
int32_t
*
val
)
{
return
tDecodeI32
(
pCoder
,
val
);
}
static
int
decode
(
SCoder
*
pCoder
,
uint32_t
*
val
)
{
return
tDecodeU32
(
pCoder
,
val
);
}
static
int
decode
(
SCoder
*
pCoder
,
int64_t
*
val
)
{
return
tDecodeI64
(
pCoder
,
val
);
}
static
int
decode
(
SCoder
*
pCoder
,
uint64_t
*
val
)
{
return
tDecodeU64
(
pCoder
,
val
);
}
static
int
encodev
(
SCoder
*
pCoder
,
int8_t
val
)
{
return
tEncodeI8
(
pCoder
,
val
);
}
static
int
encodev
(
SCoder
*
pCoder
,
uint8_t
val
)
{
return
tEncodeU8
(
pCoder
,
val
);
}
static
int
encodev
(
SCoder
*
pCoder
,
int16_t
val
)
{
return
tEncodeI16v
(
pCoder
,
val
);
}
static
int
encodev
(
SCoder
*
pCoder
,
uint16_t
val
)
{
return
tEncodeU16v
(
pCoder
,
val
);
}
static
int
encodev
(
SCoder
*
pCoder
,
int32_t
val
)
{
return
tEncodeI32v
(
pCoder
,
val
);
}
static
int
encodev
(
SCoder
*
pCoder
,
uint32_t
val
)
{
return
tEncodeU32v
(
pCoder
,
val
);
}
static
int
encodev
(
SCoder
*
pCoder
,
int64_t
val
)
{
return
tEncodeI64v
(
pCoder
,
val
);
}
static
int
encodev
(
SCoder
*
pCoder
,
uint64_t
val
)
{
return
tEncodeU64v
(
pCoder
,
val
);
}
static
int
decodev
(
SCoder
*
pCoder
,
int8_t
*
val
)
{
return
tDecodeI8
(
pCoder
,
val
);
}
static
int
decodev
(
SCoder
*
pCoder
,
uint8_t
*
val
)
{
return
tDecodeU8
(
pCoder
,
val
);
}
static
int
decodev
(
SCoder
*
pCoder
,
int16_t
*
val
)
{
return
tDecodeI16v
(
pCoder
,
val
);
}
static
int
decodev
(
SCoder
*
pCoder
,
uint16_t
*
val
)
{
return
tDecodeU16v
(
pCoder
,
val
);
}
static
int
decodev
(
SCoder
*
pCoder
,
int32_t
*
val
)
{
return
tDecodeI32v
(
pCoder
,
val
);
}
static
int
decodev
(
SCoder
*
pCoder
,
uint32_t
*
val
)
{
return
tDecodeU32v
(
pCoder
,
val
);
}
static
int
decodev
(
SCoder
*
pCoder
,
int64_t
*
val
)
{
return
tDecodeI64v
(
pCoder
,
val
);
}
static
int
decodev
(
SCoder
*
pCoder
,
uint64_t
*
val
)
{
return
tDecodeU64v
(
pCoder
,
val
);
}
template
<
typename
T
>
static
void
simple_encode_decode_func
(
bool
var_len
)
{
uint8_t
buf
[
BUF_SIZE
];
SCoder
coder
;
T
min_val
,
max_val
;
T
step
=
1
;
if
(
typeid
(
T
)
==
typeid
(
int8_t
))
{
min_val
=
INT8_MIN
;
max_val
=
INT8_MAX
;
step
=
1
;
}
else
if
(
typeid
(
T
)
==
typeid
(
uint8_t
))
{
min_val
=
0
;
max_val
=
UINT8_MAX
;
step
=
1
;
}
else
if
(
typeid
(
T
)
==
typeid
(
int16_t
))
{
min_val
=
INT16_MIN
;
max_val
=
INT16_MAX
;
step
=
1
;
}
else
if
(
typeid
(
T
)
==
typeid
(
uint16_t
))
{
min_val
=
0
;
max_val
=
UINT16_MAX
;
step
=
1
;
}
else
if
(
typeid
(
T
)
==
typeid
(
int32_t
))
{
min_val
=
INT32_MIN
;
max_val
=
INT32_MAX
;
step
=
((
T
)
1
)
<<
16
;
}
else
if
(
typeid
(
T
)
==
typeid
(
uint32_t
))
{
min_val
=
0
;
max_val
=
UINT32_MAX
;
step
=
((
T
)
1
)
<<
16
;
}
else
if
(
typeid
(
T
)
==
typeid
(
int64_t
))
{
min_val
=
INT64_MIN
;
max_val
=
INT64_MAX
;
step
=
((
T
)
1
)
<<
48
;
}
else
if
(
typeid
(
T
)
==
typeid
(
uint64_t
))
{
min_val
=
0
;
max_val
=
UINT64_MAX
;
step
=
((
T
)
1
)
<<
48
;
}
T
i
=
min_val
;
for
(;;
/*T i = min_val; i <= max_val; i += step*/
)
{
T
dval
;
// Encode NULL
for
(
td_endian_t
endian
:
endian_arr
)
{
tCoderInit
(
&
coder
,
endian
,
NULL
,
0
,
TD_ENCODER
);
if
(
var_len
)
{
GTEST_ASSERT_EQ
(
encodev
(
&
coder
,
i
),
0
);
}
else
{
GTEST_ASSERT_EQ
(
encode
(
&
coder
,
i
),
0
);
GTEST_ASSERT_EQ
(
coder
.
pos
,
sizeof
(
T
));
}
tCoderClear
(
&
coder
);
}
// Encode and decode
for
(
td_endian_t
e_endian
:
endian_arr
)
{
for
(
td_endian_t
d_endian
:
endian_arr
)
{
// Encode
tCoderInit
(
&
coder
,
e_endian
,
buf
,
BUF_SIZE
,
TD_ENCODER
);
if
(
var_len
)
{
GTEST_ASSERT_EQ
(
encodev
(
&
coder
,
i
),
0
);
}
else
{
GTEST_ASSERT_EQ
(
encode
(
&
coder
,
i
),
0
);
GTEST_ASSERT_EQ
(
coder
.
pos
,
sizeof
(
T
));
}
tCoderClear
(
&
coder
);
// Decode
tCoderInit
(
&
coder
,
d_endian
,
buf
,
BUF_SIZE
,
TD_DECODER
);
if
(
var_len
)
{
GTEST_ASSERT_EQ
(
decodev
(
&
coder
,
&
dval
),
0
);
}
else
{
GTEST_ASSERT_EQ
(
decode
(
&
coder
,
&
dval
),
0
);
GTEST_ASSERT_EQ
(
coder
.
pos
,
sizeof
(
T
));
}
if
(
typeid
(
T
)
==
typeid
(
int8_t
)
||
typeid
(
T
)
==
typeid
(
uint8_t
)
||
e_endian
==
d_endian
)
{
GTEST_ASSERT_EQ
(
i
,
dval
);
}
tCoderClear
(
&
coder
);
}
}
if
(
i
==
max_val
)
break
;
if
(
max_val
-
i
<
step
)
{
i
=
max_val
;
}
else
{
i
=
i
+
step
;
}
}
}
TEST
(
td_encode_test
,
simple_encode_and_decode_test
)
{
uint8_t
buf
[
10
];
SCoder
encoder
,
decoder
;
simple_encode_decode_func
<
int8_t
>
(
false
);
simple_encode_decode_func
<
uint8_t
>
(
false
);
simple_encode_decode_func
<
int16_t
>
(
false
);
simple_encode_decode_func
<
uint16_t
>
(
false
);
simple_encode_decode_func
<
int32_t
>
(
false
);
simple_encode_decode_func
<
uint32_t
>
(
false
);
simple_encode_decode_func
<
int64_t
>
(
false
);
simple_encode_decode_func
<
uint64_t
>
(
false
);
simple_encode_decode_func
<
int16_t
>
(
true
);
simple_encode_decode_func
<
uint16_t
>
(
true
);
simple_encode_decode_func
<
int32_t
>
(
true
);
simple_encode_decode_func
<
uint32_t
>
(
true
);
simple_encode_decode_func
<
int64_t
>
(
true
);
simple_encode_decode_func
<
uint64_t
>
(
true
);
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录