#-*- mode: perl;-*-
package main;
use constant SIZE => 5;
use Test::More tests => 6+(4*SIZE);
use Algorithm::SkipList 0.70;
ok(1);
my $List = new Algorithm::SkipList;
{
no warnings;
ok(!defined $List->first_key); # make sure this returns nothing
}
my @data = sort (0..(SIZE-1)); # test '0' as key for last_key
my %hash = map { $_ => sprintf('%04d', $_); } @data;
ok(SIZE == @data);
foreach (@data) {
$List->insert($_, $hash{$_});
}
ok($List->size == @data);
# check that next_key works without first_key
foreach (@data) {
ok($_ eq $List->next_key);
}
# check that first_key/next_key still work
{
my $i = 0;
ok($data[$i++] eq $List->first_key);
while (my $key = $List->next_key) {
ok($data[$i++] eq $key);
}
}
# test reset method
{
ok($data[0] eq $List->first_key);
$List->reset;
ok($data[0] eq $List->next_key);
}
$List->reset;
{
my $i = 0;
while (my ($key, $value) = $List->next) {
ok($data[$i++] eq $key);
ok($hash{$key} eq $value);
}
}
__END__
$List->reset;
my @prev = reverse @data;
{
my $i = 0;
while (my ($key, $value) = $List->prev) {
print STDERR "\t$key\t$value\n";
# ok($prev[$i++] eq $key);
# ok($hash{$key} eq $value);
}
}