# -*- perl -*- use strict; use Set::IntSpan 1.13; my $N = 1; sub Not { print "not " } sub OK { print "ok ", $N++, "\n" } my @Island = # cover holes ([' - ', ' - ', ' - ',], [' (-) ', ' (-) ', ' - ',], [' (-1,9-) ', ' (-) ', ' 2-8 ',], [' (-0 ', ' (-0 ', ' - ',], [' (-0,5-9 ', ' (-9 ', ' 1-4 ',], [' 0-) ', ' 0-) ', ' - ',], [' 0-5,9-) ', ' 0-) ', ' 6-8 ',], [' 1 ', ' 1 ', ' - ',], [' 5 ', ' 5 ', ' - ',], [' 1,3,5 ', ' 1-5 ', ' 2,4 ',], [' 1,3-5 ', ' 1-5 ', ' 2 ',], ['-1-5 ', '-1-5 ', ' - ',], ); my @Inset = ( [ ' - ', -2, ' - ' ], [ ' - ', -1, ' - ' ], [ ' - ', 0, ' - ' ], [ ' - ', 1, ' - ' ], [ ' - ', 2, ' - ' ], [ '(-)', -2, '(-)' ], [ '(-)', -1, '(-)' ], [ '(-)', 0, '(-)' ], [ '(-)', 1, '(-)' ], [ '(-)', 2, '(-)' ], [ '(-0', -2, '(-2 ' ], [ '(-0', -1, '(-1 ' ], [ '(-0', 0, '(-0 ' ], [ '(-0', 1, '(--1' ], [ '(-0', 2, '(--2' ], [ '0-)', -2, '-2-)' ], [ '0-)', -1, '-1-)' ], [ '0-)', 0, ' 0-)' ], [ '0-)', 1, ' 1-)' ], [ '0-)', 2, ' 2-)' ], [ '0,2-3,6-8,12-15,20-24,30-35' , -2, '-2-26,28-37' ], [ '0,2-3,6-8,12-15,20-24,30-35' , -1, '-1-9,11-16,19-25,29-36' ], [ '0,2-3,6-8,12-15,20-24,30-35' , 0, '0,2-3,6-8,12-15,20-24,30-35' ], [ '0,2-3,6-8,12-15,20-24,30-35' , 1, '7,13-14,21-23,31-34' ], [ '0,2-3,6-8,12-15,20-24,30-35' , 2, '22,32-33' ], [ '(-0,2-3,6-8,12-15,20-24,30-35', -2, '(-26,28-37' ], [ '(-0,2-3,6-8,12-15,20-24,30-35', -1, '(-9,11-16,19-25,29-36' ], [ '(-0,2-3,6-8,12-15,20-24,30-35', 0, '(-0,2-3,6-8,12-15,20-24,30-35' ], [ '(-0,2-3,6-8,12-15,20-24,30-35', 1, '(--1,7,13-14,21-23,31-34' ], [ '(-0,2-3,6-8,12-15,20-24,30-35', 2, '(--2,22,32-33' ], [ '0,2-3,6-8,12-15,20-24,30-)' , -2, '-2-26,28-)' ], [ '0,2-3,6-8,12-15,20-24,30-)' , -1, '-1-9,11-16,19-25,29-)' ], [ '0,2-3,6-8,12-15,20-24,30-)' , 0, '0,2-3,6-8,12-15,20-24,30-)' ], [ '0,2-3,6-8,12-15,20-24,30-)' , 1, '7,13-14,21-23,31-)' ], [ '0,2-3,6-8,12-15,20-24,30-)' , 2, '22,32-)' ], ); print "1..", 2 * (@Island+1) + (@Inset+2), "\n"; Cover(); Holes(); Inset(); sub Cover { print "#cover\n"; for my $t (@Island) { my $set = new Set::IntSpan $t->[0]; my $expected = new Set::IntSpan $t->[1]; my $result = $set->cover; printf "#%-12s %-12s -> %s\n", 'cover', $set->run_list, $result->run_list; $result->equal($expected) or Not; OK; } Set::IntSpan->new->extent->empty or Not; OK; } sub Holes { print "#holes\n"; for my $t (@Island) { my $set = new Set::IntSpan $t->[0]; my $expected = new Set::IntSpan $t->[2]; my $result = $set->holes; printf "#%-12s %-12s -> %s\n", 'holes', $set->run_list, $result->run_list; $result->equal($expected) or Not; OK; } Set::IntSpan->new->holes->empty or Not; OK; } sub Inset { print "#inset\n"; for my $t (@Inset) { my $set = new Set::IntSpan $t->[0]; my $n = $t->[1]; my $expected = new Set::IntSpan $t->[2]; my $result = $set->inset($n); printf "#%-12s %-12s %d -> %s\n", 'inset', $set->run_list, $n, $result->run_list; $result->equal($expected) or Not; OK; } Set::IntSpan->new('1-3')->pad (1)->size==5 or Not; OK; Set::IntSpan->new('1-3')->trim(1)->size==1 or Not; OK; }