The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More tests => 7;
use strict;
use warnings;

use_ok('Date::Span');

my $start = 10000000;
my $end   = 11000000;

my @durations = (
	[  9936000, 22400 ],
	[ 10022400, 86400 ],
	[ 10108800, 86400 ],
	[ 10195200, 86400 ],
	[ 10281600, 86400 ],
	[ 10368000, 86400 ],
	[ 10454400, 86400 ],
	[ 10540800, 86400 ],
	[ 10627200, 86400 ],
	[ 10713600, 86400 ],
	[ 10800000, 86400 ],
	[ 10886400, 86400 ],
	[ 10972800, 27200 ]
);

my @expansion = (
	[ 10000000, 10022399 ],
	[ 10022400, 10108799 ],
	[ 10108800, 10195199 ],
	[ 10195200, 10281599 ],
	[ 10281600, 10367999 ],
	[ 10368000, 10454399 ],
	[ 10454400, 10540799 ],
	[ 10540800, 10627199 ],
	[ 10627200, 10713599 ],
	[ 10713600, 10799999 ],
	[ 10800000, 10886399 ],
	[ 10886400, 10972799 ],
	[ 10972800, 11000000 ]
); 

is_deeply(
	[ range_durations($start, $end) ],
	\@durations,
	"durations: 10000000 to 11000000"
);

is_deeply(
	[ range_expand($start, $end) ],
	\@expansion,
	"expansion: 10000000 to 11000000"
);

is_deeply(
	[ range_durations(10000000, 10000500) ],
	[ [ 9936000, 500 ] ],
	"single day duration: 10000000 to 10000500"
);

is_deeply(
	[ range_expand(10000000, 10000500) ],
	[ [ 10000000, 10000500 ] ],
	"single day expansion 10000000 to 10000500"
);

is(range_expand(10000000, 9000000), undef, "can't expand backward range");
is(range_durations(10000000, 9000000), undef, "can't expand backward range");