Algorithm-SkipList
view release on metacpan or search on metacpan
Revision history for Perl extension Algorithm::SkipList. (Changes which may
not be backwards compatible are marked with an asterisk '*'.)
1.02 Wed Jan 4 2005
* removed validate_key and validate_value methods from node types
- removed commented-out assertions
- added _search_nodes method
- keys and values methods rewritten, and can retrieve keys or
values between key ranges ranges
- copy method rewritten
- corrected typo in error message
- added missing test to MANIFEST
- added additional tests
- added SIGNATURE to distribution
1.01 Fri Sep 3 2004
- minor correction to distribution
1.00 Fri Sep 3 2004
- renamed distribution to Algorithm-SkipList
- updated version numbers
- corrected typos in documentation
- added tests for deleted greatest bug
- fixed bug with greatest method when deleting last node
- added _greatest_node method to find the last node as needed
- other minor code changes
0.70_01 Sun Jun 6 2004
- tests rewritten (work in progress)
- fixed bug with next_key checking node when key was deleted
- uses Test::More for tests
- fixed "Too late to run INIT block" error with Test::More
use_ok, $NULL is now set in import() method
- fixed bug where level sometimes exceeded user-set max level
- P and max_level can now be set dynamically
- added tests for max_level and p
- checks for error when setting max_level or P
- fixed bug with definition of List::SkipList::Null
- $NULL is now an 'our' variable and accessible from outside
- level method was changed to autoload, since it was redundant
- minor optimization of _search_with_finger and _search
* header method in Node is read-only - it returns a pointer
which can be used to change values anyway
* key method in Node is read-only - it should not be
changed once it is inside a list
- added _adjust_level_threshold method from code that was in
_new_node_level to adjust SIZE_THRESHOLD/SIZE_LEVEL
- added Build.PL to distribution
- updated README
- corrected and updated POD
0.31 Fri Feb 13 2004
- removed memoized node example from POD
- reformatted E-mail addresses in various files to foil
spam harvesters
- changes calls to keys to CORE::keys [Bug 5317]
- added version to List::SkipList::Node
- corrected errors in POD formatting
- corrected and updated POD
- added META.yml file to distribution
0.30 Tue Dec 2 2003
- ability to tie hashes
- made some methods autoloading
- added last_key and reset methods to allow auto-enumeration
- added least, greatest, keys and values methods
- added _first_node, merge, append and copy methods
- insert now returns a finger
REVISION HISTORY
Changes since v1.01:
1.02 Wed Jan 4 2005
* removed validate_key and validate_value methods from node types
- removed commented-out assertions
- added _search_nodes method
- keys and values methods rewritten, and can retrieve keys or
values between key ranges ranges
- copy method rewritten
- corrected typo in error message
- added missing test to MANIFEST
- added additional tests
- added SIGNATURE to distribution
A detailed revision history is in the Changes file included with
this distribution.
KNOWN ISSUES
The following issues are known:
t/07-max_level.t view on Meta::CPAN
ok( defined $List );
ok( $List->max_level == $level );
my $size = ($level < 10) ? (1<<$level) : (1<<10);
for (1..$size) { $List->insert($_); }
ok( $List->max_level == $level );
ok( $List->level == $List->list->level, "test level() method" );
# This doesn't prove there's no error (since it's
# non-deterministic), but it's worth checking anyway.
ok( $List->list->level <= $level );
$List->max_level( $List->list->level );
ok( $List->list->level == $List->max_level );
eval { $List->max_level( $List->list->level-1); };
ok( $List->list->level == $List->max_level );
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;
( run in 0.263 second using v1.01-cache-2.11-cpan-65fba6d93b7 )