# $Id: parse_interval.t,v 1.2 2003/05/30 14:04:49 cfaerber Exp $
use Test::More tests => 8;
use DateTime::Format::Pg 0.02;
my @results = (
{ 'days' => -1 },
{ 'minutes' => -(23*60+59) },
{ 'days' => -1, 'minutes' => -1 },
{ 'months' => 1, 'days' => -1 },
);
my %tests = (
'-1 days' => $results[0],
'-23:59' => $results[1],
'-1 days -00:01' => $results[2],
'1 mon -1 days' => $results[3],
'@ 1 day ago' => $results[0],
'@ 23 hours 59 mins ago' => $results[1],
'@ 1 day 1 min ago' => $results[2],
'@ 1 mon -1 days' => $results[3],
);
foreach my $test (keys %tests) {
my $du = DateTime::Format::Pg->parse_interval($test);
is( duration_hash_to_string($du->deltas()),
duration_hash_to_string(%{$tests{$test}}) );
}
# for better Test::More::is output
#
sub duration_hash_to_string {
my %hash = @_;
my @vals = ();
foreach(qw (months days minutes seconds nanoseconds)) {
push @vals, sprintf('%s=%d',$_,$hash{$_}) if $hash{$_};
}
return join(', ',@vals);
}