Algorithm-SkipList
view release on metacpan or search on metacpan
t/20-heavy.t view on Meta::CPAN
#-*- mode: perl;-*-
package main;
use strict;
use warnings;
# use Pod::Coverage package => 'Algorithm::SkipList';
# These tests are redundant, but they are useful for "heavy" testing
# to find rare errors (since this is a non-deterministic algorithm)
# and for some informal benchmark comparisons.
# For "heavy" testing, change size to a larger value (100 or 1,000 or 10,000).
use constant SIZE => 20;
use Test::More tests => 6+(53*SIZE);
use Test::Warn;
use_ok("Algorithm::SkipList");
ok($Algorithm::SkipList::VERSION >= 1.02);
my @Keys = ();
my $Cnt = SIZE;
my $Stuff = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
sub random_stuff {
my $len ||= 8;
my $thing = "";
for(1..$len) {
$thing .= substr($Stuff, int(rand(length($Stuff))),1);
}
return $thing;
}
my %Hash = ();
my %Bogus = ();
my $List = new Algorithm::SkipList;
{
no warnings;
ok(!defined $List->first_key);
}
foreach (1..SIZE) {
my $k;
do {
$k = random_stuff();
} while (exists $Bogus{ $k });
my $v = random_stuff();
$Hash{ $k } = $v;
my $a; # alternate value
do {
$a = random_stuff();
} while ($a eq $v);
my $x;
do {
$x = random_stuff();
} while (exists $Hash{ $v });
$Bogus{ $x } = $a;
ok( $List->list->key_cmp($k) == -1 );
warnings_are {
ok( !defined $List->list->key );
} {carped => "this method should never be run"}, "header accessor warning";
warnings_are {
ok( !defined $List->list->value );
} {carped => "this method should never be run"}, "header accessor warning";
warnings_are {
$List->list->value($a);
} {carped => "this method should never be run"}, "header accessor warning";
warnings_are {
ok( !defined $List->list->value );
} {carped => "this method should never be run"}, "header accessor warning";
# ok( $Algorithm::SkipList::NULL->key_cmp($k) == 1 );
# ok( !defined $Algorithm::SkipList::NULL->key );
# ok( !defined $Algorithm::SkipList::NULL->value );
# $Algorithm::SkipList::NULL->value($a);
# ok( !defined $Algorithm::SkipList::NULL->value );
# ok( $Algorithm::SkipList::NULL->level == 0 );
# ok( !defined $Algorithm::SkipList::NULL->header );
( run in 0.709 second using v1.01-cache-2.11-cpan-140bd7fdf52 )