The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use warnings;
use Test::More;
use Data::Dumper;

BEGIN {
  eval "use Set::IntervalTree";
  plan skip_all => "Set::IntervalTree not installed" if $@;

  use_ok('Bio::Gonzales::Range::Overlap');
}

{
  my $ro = Bio::Gonzales::Range::Overlap->new( ranges => [ [ 1, 5, "eins" ], [ 7, 9, "zwei" ] ] );

  is_deeply( $ro->overlaps_with( 4, 6 ), [ [ 1, 5, "eins" ] ] );
  is_deeply( $ro->overlaps_with( 6, 6 ), [] );
  is_deeply( $ro->overlaps_with( 5, 6 ), [ [ 1, 5, "eins" ] ] );
  is_deeply( $ro->overlaps_with( 6, 7 ), [ [ 7, 9, "zwei" ] ] );
  is_deeply( $ro->contained_in( 6, 7 ),  [] );
  is_deeply( $ro->contained_in( 7, 9 ),  [ [ 7, 9, "zwei" ] ] );
  is_deeply( $ro->contained_in( 6, 10 ), [ [ 7, 9, "zwei" ] ] );
  is_deeply( $ro->contained_in( 7, 10 ), [ [ 7, 9, "zwei" ] ] );
  is_deeply( $ro->contained_in( 8, 10 ), [] );
}
{
  my $ro = Bio::Gonzales::Range::Overlap->new(
    ranges => [ [ 1, 5, "eins" ], [ 7, 9, "zwei" ] ],
    keep_coords => 0
  );

  is_deeply( $ro->overlaps_with( 4, 6 ), ["eins"] );
  is_deeply( $ro->overlaps_with( 6, 6 ), [] );
  is_deeply( $ro->overlaps_with( 5, 6 ), ["eins"] );
  is_deeply( $ro->overlaps_with( 6, 7 ), ["zwei"] );
  is_deeply( $ro->contained_in( 6, 7 ),  [] );
  is_deeply( $ro->contained_in( 7, 9 ),  ["zwei"] );
  is_deeply( $ro->contained_in( 6, 10 ), ["zwei"] );
  is_deeply( $ro->contained_in( 7, 10 ), ["zwei"] );
  is_deeply( $ro->contained_in( 8, 10 ), [] );
}

done_testing();