use warnings FATAL => qw(all);
use ExtUtils::testlib;
use Test::More tests => 30 ;
use Data::Dumper ;
use Array::IntSpan;
my $trace = shift || 0 ;
my @expect= ([1,3,'ab'],[6,9,'cd']) ;
my $r = Array::IntSpan->new(@expect) ;
diag(Dumper $r) if $trace ;
ok ( defined($r) , 'Array::IntSpan new() works') ;
is_deeply( $r , \@expect, 'new content ok') ;
my $spawn = sub { 'sp:'.$_[2] ;} ;
foreach my $a (
[[0, 0,'bc'],[0,0,[0, 0,'bc']]],
[[0, 1,'bc'],[0,1,[0, 1,'bc'],[2,3,'ab']]],
[[0, 3,'bc'],[0,1,[0, 3,'bc']]],
[[0, 4,'bc'],[0,1,[0, 4,'bc']]],
[[0, 5,'bc'],[0,1,[0, 5,'bc']]],
[[0, 6,'bc'],[0,2,[0, 6,'bc'],[7,9,'cd']]],
[[0, 9,'bc'],[0,2,[0, 9,'bc']]],
[[0,10,'bc'],[0,2,[0,10,'bc']]],
[[1, 3,'bc'],[0,1,[1, 3,'bc']]],
[[1, 2,'bc'],[0,1,[1, 2,'bc'],[3, 3,'ab']]],
[[2, 2,'bc'],[0,1,[1, 1,'ab'],[2, 2,'bc'],[3,3,'ab']]],
[[2, 3,'bc'],[0,1,[1, 1,'ab'],[2, 3,'bc']]],
[[2, 5,'bc'],[0,1,[1, 1,'ab'],[2, 5,'bc']]],
[[2, 8,'bc'],[0,2,[1, 1,'ab'],[2, 8,'bc'],[9,9,'cd']]],
[[2, 9,'bc'],[0,2,[1, 1,'ab'],[2, 9,'bc']]],
[[2,10,'bc'],[0,2,[1, 1,'ab'],[2,10,'bc']]],
[[4, 4,'bc'],[1,0,[4, 4,'bc']]],
[[5, 6,'bc'],[1,1,[5, 6,'bc'],[7,9,'cd']]],
[[5, 9,'bc'],[1,1,[5, 9,'bc']]],
[[5,11,'bc'],[1,1,[5,11,'bc']]],
[[6, 6,'bc'],[1,1,[6, 6,'bc'],[7,9,'cd']]],
[[6, 9,'bc'],[1,1,[6, 9,'bc']]],
[[7, 9,'bc'],[1,1,[6, 6,'cd'],[7,9,'bc']]],
[[9,11,'bc'],[1,1,[6, 8,'cd'],[9,11,'bc']]],
[[10,11,'bc'],[2,0,[10,11,'bc']]],
[[10,11,'bc', $spawn],[2,0,[10,11,'bc']]],
[[9,11,'bc', $spawn],[1,1,[6, 8,'sp:cd'],[9,11,'bc']]],
[[2, 2,'bc', $spawn],[0,1,[1, 1,'sp:ab'],[2, 2,'bc'],[3,3,'sp:ab']]],
)
{
my @r = $r->get_splice_parms(@{$a->[0]}) ;
is_deeply(\@r, $a->[1], "get_splice_parms @{$a->[0]}") || diag(Dumper \@r);
}