Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
5117c20a
"vscode:/vscode.git/clone" did not exist on "857c09b04d7be1b016956e55a9f7b8118585c59b"
Commit
5117c20a
authored
Aug 13, 2012
by
Pieter Noordhuis
Browse files
Add ziplist test for deleting next to last entries
parent
cada7f96
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/ziplist.c
View file @
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
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment