package testlib;
use Test::More;
sub compare {
my ($dtf,$dt,$name) = @_;
my $dts = $dtf->format_datetime($dt);
my $dtc = $dtf->parse_datetime($dts);
my $timezone = $dt->time_zone->name;
my $locale = $dt->locale->id;
my $nanosecond = $dt->nanosecond();
unless($dtc && ref $dtc && $dtc->isa('DateTime')) {
fail(join ("\n",
"Pattern: '$dtf->{pattern}'",
"String: '$dts'",
"Original: '$dt.$nanosecond $timezone'",
"Computed: UNDEF",
"Locale: '$locale'",
"Error: ".$dtf->errmsg,
)
);
return;
}
unless ( DateTime->compare_ignore_floating( $dtc, $dt ) == 0) {
my $nanosecondc = $dtc->nanosecond;
my $timezonec = $dtc->time_zone->name;
fail(join ("\n",
"Pattern: '$dtf->{pattern}'",
"String: '$dts'",
"Original: '$dt.$nanosecond $timezone'",
"Computed: '$dtc.$nanosecondc $timezonec'",
"Locale: '$locale'",
#,"Pattern: ". Dumper $dtf->{_built_pattern}
)
);
} else {
pass($name || 'Successfully compared datetime');
}
return $dtc;
}
1;