41_heap.t revision 7c478bd95313f5f23a4c958a745db2134aa03244
#
# Unit tests for heap implementation
#
# Test the following methods:
# new
# is_empty
# empty
# insert
# remove
# popheap
# promote
# lookup
# set_val
# rekey
# expire_order
# Finish these later.
# They're nonurgent because the important heap stuff is extensively
# tested by tests 19, 20, 24, 30, 32, 33, and 40, as well as by pretty
# much everything else.
print "1..1\n";
my ($N, @R, $Q, $ar) = (1);
print "ok $N\n";
$N++;
exit;
my @HEAP_MOVE;
print "ok $N\n";
$N++;
# (3) Are all the methods there?
{
my $good = 1;
$good = 0;
}
}
$N++;
}
# (4) Straight insert and removal FIFO test
for (1..10) {
}
for (1..10) {
}
$N++;
# (5) Remove from empty heap
$n = $h->popheap;
$N++;
# (6) Interleaved insert and removal
$Q = 0;
@R = ();
for my $i (1..4) {
for my $j (1..$i) {
$Q++;
}
for my $j (1..$i) {
}
}
$N++;
# (7) It should be empty now
$N++;
# (8) Insert and delete
$Q = 1;
for (1..10) {
$Q++;
}
for (2, 4, 6, 8, 10) {
}
@R = ();
"ok $N\n" : "not ok $N \# expected (c1 c3 c5 c7 c9), got (@R)\n";
$N++;
# (9) Interleaved insert and delete
$Q = 1; my $QQ = 1;
@R = ();
for my $i (1..4) {
for my $j (1..$i) {
$Q++;
}
for my $j (1..$i) {
$QQ++;
}
}
"ok $N\n" : "not ok $N \# expected (d1 d3 d5 d7 d9), got (@R)\n";
$N++;
# (10) Promote
$Q = 1;
for (1..10) {
$Q++;
}
for (2, 4, 6, 8, 10) {
}
@R = ();
"ok $N\n" :
"not ok $N \# expected (e1 e3 e5 e7 e9 e2 e4 e6 e8 e10), got (@R)\n";
$N++;
# (11-15) Lookup
$Q = 1;
for (1..10) {
$Q++;
}
for (2, 4, 6, 4, 8) {
$N++;
}
# (16) It shouldn't be empty
$N++;
# (17) Lookup should have promoted the looked-up records
@R = ();
"ok $N\n" :
"not ok $N \# expected (f1 f3 f5 f7 f9 f10 f2 f6 f4 f8), got (@R)\n";
$N++;
# (18-19) Typical 'rekey' operation
$Q = 1;
for (1..10) {
$Q++;
}
{
my $good = 1;
print "# looked up $k, got $v, expected $x{$k}\n";
$good = 0;
}
}
$N++;
}
{
my $good = 1;
for my $k (6, 7) {
print "# looked up $k, got $v, should have been undef\n";
$good = 0;
}
}
$N++;
}
# (20) keys
"ok $N\n" :
"not ok $N \# expected (1 2 3 4 5 8 9 10 11 12) got (@R)\n";
$N++;
# (21) update
for (1..5, 8..12) {
}
@R = ();
}
"ok $N\n" :
"not ok $N \# expected (h1 h2 h3 h4 h5 h8 h9 h10 h11 h12) got (@R)\n";
$N++;
# (22-23) bytes
my $B;
$B = $h->bytes;
print $B == 23 ? "ok $N\n" : "not ok $N \# expected 23, got $B\n";
$N++;
$B = $h->bytes;
print $B == 29 ? "ok $N\n" : "not ok $N \# expected 29, got $B\n";
$N++;
# (24-25) empty
$h->empty;
$N++;
$n = $h->popheap;
$N++;
# (26) very weak testing of DESTROY
undef $h;
# are we still alive?
print "ok $N\n";
$N++;
sub iota {
my ($p, $n) = @_;
my $r;
my $i = 0;
while ($i <= $n) {
$r .= "$p$i ";
$i++;
}
chop $r;
$r;
}