#!/usr/local/bin/perl
BEGIN
{
use
open
':std'
=>
':utf8'
;
use
ok(
'Apache2::API::DateTime'
);
use
ok(
'DateTime'
) || bail_out(
"No DateTime module installed"
);
our
$DEBUG
=
exists
(
$ENV
{AUTHOR_TESTING} ) ?
$ENV
{AUTHOR_TESTING} : 0;
require
(
"./t/env.pl"
)
if
( -e(
"t/env.pl"
) );
};
my
$fmt
= Apache2::API::DateTime->new;
isa_ok(
$fmt
,
'Apache2::API::DateTime'
);
can_ok(
$fmt
,
'format_datetime'
);
can_ok(
$fmt
,
'parse_date'
);
can_ok(
$fmt
,
'parse_datetime'
);
can_ok(
$fmt
,
'str2datetime'
);
can_ok(
$fmt
,
'str2time'
);
can_ok(
$fmt
,
'time2datetime'
);
can_ok(
$fmt
,
'time2str'
);
my
$dt
= DateTime->now;
$dt
->set_formatter(
$fmt
);
is(
$dt
->stringify,
'Mon, 01 Nov 2021 08:12:10 GMT'
,
'format_datetime'
);
my
@tests
= (
[
'Mon, 01 Nov 2021 08:12:10 GMT'
,
'2021-11-01T08:12:10'
,
'rfc822/rfc1123 format'
],
[
'Monday, 01-Nov-21 08:12:10 GMT'
,
'2021-11-01T08:12:10'
,
'rfc1036'
],
[
'Mon Nov 1 08:12:10 2021'
,
'2021-11-01T08:12:10'
,
'ANSI C asctime'
],
[
'01 Nov 2021 08:12:10 GMT'
,
'2021-11-01T08:12:10'
,
'rfc7231'
],
[
'2021-11-01T08:12:10'
,
'2021-11-01T08:12:10'
,
'iso8601'
],
[
'2021-11-01 08:12:10'
,
'2021-11-01T08:12:10'
,
'iso8601'
],
);
foreach
my
$t
(
@tests
)
{
my
$dt
=
$fmt
->parse_datetime(
$t
->[0] );
if
( !
defined
(
$dt
) )
{
fail(
$t
->[2] .
': '
.
$t
->[0] .
' -> '
.
$t
->[1] .
': '
.
$fmt
->error );
next
;
}
is(
$t
->[1] =>
$dt
->iso8601,
$t
->[2] );
}
done_testing();