From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

use strict;
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;