test_redis {
my
$r
=
shift
;
for
my
$n
(1 .. 10) {
my
$key1
=
"lrange_test1_$n"
;
my
$key2
=
"lrange_test2_$n"
;
$r
->del(
$key1
);
$r
->del(
$key2
);
for
(1 .. 20) {
$r
->rpush(
$key1
,
join
"\n"
,
map
{
"A"
x 100} (0 .. 3));
$r
->rpush(
$key2
,
join
"\n"
,
map
{
"B"
x 100} (0 .. 3));
}
for
(1 .. 20) {
$r
->rpush(
$key1
,
join
"\n"
,
map
{
"C"
x 100} (0 .. 3));
$r
->rpush(
$key2
,
join
"\n"
,
map
{
"D"
x 100} (0 .. 3));
}
$r
->all_cv->begin;
$r
->lrange(
$key1
, 0, 19,
sub
{
my
$value
=
join
"\n"
,
map
{
"A"
x 100} (0 .. 3);
is
scalar
@{
$_
[0]}, 20,
"correct length $key1 0 19"
;
is
$_
[0][-1],
$value
,
"correct end value $key1 0 19"
;
is
$_
[0][0],
$value
,
"correct start value $key1 0 19"
;
$r
->all_cv->end;
});
$r
->all_cv->begin;
$r
->lrange(
$key2
, 0, 19,
sub
{
my
$value
=
join
"\n"
,
map
{
"B"
x 100} (0 .. 3);
is
scalar
@{
$_
[0]}, 20,
"correct length $key2 0 19"
;
is
$_
[0][-1],
$value
,
"correct end value $key2 0 19"
;
is
$_
[0][0],
$value
,
"correct start value $key2 0 19"
;
$r
->all_cv->end;
});
$r
->all_cv->begin;
$r
->lrange(
$key1
, 20, 39,
sub
{
my
$value
=
join
"\n"
,
map
{
"C"
x 100} (0 .. 3);
is
scalar
@{
$_
[0]}, 20,
"correct length $key1 20 39"
;
is
$_
[0][-1],
$value
,
"correct end value $key1 20 39"
;
is
$_
[0][0],
$value
,
"correct start value $key1 20 39"
;
$r
->del(
$key1
,
sub
{
$r
->all_cv->end });
});
$r
->all_cv->begin;
$r
->lrange(
$key2
, 20, 39,
sub
{
my
$value
=
join
"\n"
,
map
{
"D"
x 100} (0 .. 3);
is
scalar
@{
$_
[0]}, 20,
"correct length $key2 20 39"
;
is
$_
[0][-1],
$value
,
"correct end value $key2 20 39"
;
is
$_
[0][0],
$value
,
"correct start value $key2 20 39"
;
$r
->del(
$key2
,
sub
{
$r
->all_cv->end });
});
}
$r
->all_cv->
recv
;
};
done_testing;