use strict; use warnings; use Test::More tests => 242; use Set::IntSpan::Fast; # Extend package Set::IntSpan::Fast; # Reference implementation sub alt_all_in_range { my ( $self, $lo, $hi ) = @_; my $range = __PACKAGE__->new; $range->add_range( $lo, $hi ); return $self->intersection( $range )->equals( $range ); } package main; my $set = Set::IntSpan::Fast->new( '1,3,5-6,9,11-14,18-100' ); for my $lo ( -1 .. 20 ) { for my $hi ( $lo .. $lo + 10 ) { my $want = $set->alt_all_in_range( $lo, $hi ); my $got = $set->contains_all_range( $lo, $hi ); ok !$want == !$got, "$lo .. $hi"; } }