# -*- perl -*-
use strict;
use Set::IntSpan 1.13;
my $N = 1;
sub Not { print "not " }
sub OK { print "ok ", $N++, "\n" }
sub Table { [ map { [ split(' ', $_) ] } split(/\s*\n\s*/, shift) ] }
my @Sets = split(' ', q{ - (-) (-3 3-) 3 3-5 3-5,7-9 } );
my @Elements = ( 1..7 );
my $Member = Table <
%d\n",
"member", $run_list, $int, $result;
my $expected = $Member->[$s][$i];
$result ? $expected : ! $expected or Not; OK;
}
}
}
sub Insert { Delta("insert", $Insert) }
sub Remove { Delta("remove", $Remove) }
sub Delta
{
my($method, $expected) = @_;
print "#$method\n";
for my $s (0..$#Sets)
{
for my $i (0..$#Elements)
{
my $run_list = $Sets[$s];
my $set = new Set::IntSpan $run_list;
my $int = $Elements[$i];
$set->$method($int);
my $result = run_list $set;
printf "#%-12s %-12s %d -> %s\n",
$method, $run_list, $int, $result;
$result eq $expected->[$s][$i] or Not; OK;
}
}
}