The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use List::Util qw(max);
use Heap::Fibonacci::Fast;

my $count = 100;
use Test::More tests => (10*(2*100 + 3));

my $t = Heap::Fibonacci::Fast->new('max');

foreach (1..10) {
	my @data = map { int(rand() * 10 * $count) } (1..$count);
	my @elements = $t->key_insert(map { $_, $_ } @data);

	is(scalar @data, scalar @elements);
	is($t->count(), $count);

	while (scalar @data){
		my $ind = int(rand() * scalar @data);

		$t->remove($elements[$ind]);
		splice @data, $ind, 1;
		splice @elements, $ind, 1;

		is($t->count(), scalar @data);
		is($t->top(), max @data);
	}

	is($t->count(), 0);
}