Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xindoo
redis
提交
5117c20a
R
redis
项目概览
xindoo
/
redis
通知
2
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
redis
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5117c20a
编写于
8月 13, 2012
作者:
P
Pieter Noordhuis
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add ziplist test for deleting next to last entries
上级
cada7f96
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
53 addition
and
0 deletion
+53
-0
src/ziplist.c
src/ziplist.c
+53
-0
未找到文件。
src/ziplist.c
浏览文件 @
5117c20a
...
...
@@ -1034,6 +1034,22 @@ int randstring(char *target, unsigned int min, unsigned int max) {
return
len
;
}
void
verify
(
unsigned
char
*
zl
,
zlentry
*
e
)
{
int
i
;
int
len
=
ziplistLen
(
zl
);
zlentry
_e
;
for
(
i
=
0
;
i
<
len
;
i
++
)
{
memset
(
&
e
[
i
],
0
,
sizeof
(
zlentry
));
e
[
i
]
=
zipEntry
(
ziplistIndex
(
zl
,
i
));
memset
(
&
_e
,
0
,
sizeof
(
zlentry
));
_e
=
zipEntry
(
ziplistIndex
(
zl
,
-
len
+
i
));
assert
(
memcmp
(
&
e
[
i
],
&
_e
,
sizeof
(
zlentry
))
==
0
);
}
}
int
main
(
int
argc
,
char
**
argv
)
{
unsigned
char
*
zl
,
*
p
;
unsigned
char
*
entry
;
...
...
@@ -1315,6 +1331,43 @@ int main(int argc, char **argv) {
printf
(
"SUCCESS
\n\n
"
);
}
printf
(
"Regression test deleting next to last entries:
\n
"
);
{
char
v
[
3
][
257
];
zlentry
e
[
3
];
int
i
;
for
(
i
=
0
;
i
<
(
sizeof
(
v
)
/
sizeof
(
v
[
0
]));
i
++
)
{
memset
(
v
[
i
],
'a'
+
i
,
sizeof
(
v
[
0
]));
}
v
[
0
][
256
]
=
'\0'
;
v
[
1
][
1
]
=
'\0'
;
v
[
2
][
256
]
=
'\0'
;
zl
=
ziplistNew
();
for
(
i
=
0
;
i
<
(
sizeof
(
v
)
/
sizeof
(
v
[
0
]));
i
++
)
{
zl
=
ziplistPush
(
zl
,
(
unsigned
char
*
)
v
[
i
],
strlen
(
v
[
i
]),
ZIPLIST_TAIL
);
}
verify
(
zl
,
e
);
assert
(
e
[
0
].
prevrawlensize
==
1
);
assert
(
e
[
1
].
prevrawlensize
==
5
);
assert
(
e
[
2
].
prevrawlensize
==
1
);
/* Deleting entry 1 will increase `prevrawlensize` for entry 2 */
unsigned
char
*
p
=
e
[
1
].
p
;
zl
=
ziplistDelete
(
zl
,
&
p
);
verify
(
zl
,
e
);
assert
(
e
[
0
].
prevrawlensize
==
1
);
assert
(
e
[
1
].
prevrawlensize
==
5
);
printf
(
"SUCCESS
\n\n
"
);
}
printf
(
"Create long list and check indices:
\n
"
);
{
zl
=
ziplistNew
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录