#!/usr/bin/perl -w
use strict;
use Test::More tests => 37;
use DateTime::Format::ICal;
my $ical = 'DateTime::Format::ICal';
{
my $dt = $ical->parse_datetime( '19920405T160708Z' );
is( $dt->sec, 8, "second accessor read is correct" );
is( $dt->minute, 7, "minute accessor read is correct" );
is( $dt->hour, 16, "hour accessor read is correct" );
is( $dt->day, 5, "day accessor read is correct" );
is( $dt->month, 4, "month accessor read is correct" );
is( $dt->year, 1992, "year accessor read is correct" );
is( $dt->time_zone->name, 'UTC', 'time zone should be UTC' );
is( $ical->format_datetime($dt), '19920405T160708Z', 'output should match input' );
}
{
my $dt = $ical->parse_datetime( '18700523T164702Z' );
is( $dt->year, 1870, 'Pre-epoch year' );
is( $dt->month, 5, 'Pre-epoch month' );
is( $dt->sec, 2, 'Pre-epoch seconds' );
is( $dt->time_zone->name, 'UTC', 'time zone should be UTC' );
is( $ical->format_datetime($dt), '18700523T164702Z', 'output should match input' );
}
{
my $dt = $ical->parse_datetime( '23481016T041612Z' );
is( $dt->year, 2348, "Post-epoch year" );
is( $dt->day, 16, "Post-epoch day");
is( $dt->hour, 04, "Post-epoch hour");
is( $dt->time_zone->name, 'UTC', 'time zone should be UTC' );
is( $ical->format_datetime($dt), '23481016T041612Z', 'output should match input' );
}
{
my $dt = $ical->parse_datetime( '00241121Z' );
is( $dt->year, 24, "date-only year" );
is( $dt->month, 11, "date-only month");
is( $dt->day, 21, "date-only day");
is( $dt->time_zone->name, 'UTC', 'time zone should be UTC' );
is( $ical->format_datetime($dt), '00241121T000000Z',
'output should match input (except as a datetime)' );
}
{
my $dt = $ical->parse_datetime( '00241121' );
is( $dt->year, 24, "date-only year" );
is( $dt->month, 11, "date-only month");
is( $dt->day, 21, "date-only day");
ok( $dt->time_zone->is_floating, 'should be floating time zone' );
is( $ical->format_datetime($dt), '00241121T000000',
'output should match input (except as a datetime)' );
}
{
my $dt = $ical->parse_datetime( 'TZID=America/Chicago:00241121' );
is( $dt->year, 24, "date-only year" );
is( $dt->month, 11, "date-only month");
is( $dt->day, 21, "date-only day");
is( $dt->hour, 0, "date-only hour" );
is( $dt->minute, 0, "date-only minute" );
is( $dt->second, 0, "date-only second" );
is( $dt->time_zone->name, 'America/Chicago', 'should be America/Chicago time zone' );
is( $ical->format_datetime($dt), 'TZID=America/Chicago:00241121T000000',
'output should match input (except as a datetime)' );
}
{
my $dt = DateTime->new( year => 1900, hour => 15, time_zone => '-0100' );
is( $ical->format_datetime($dt), '19000101T160000Z',
'offset only time zone should be formatted as UTC' );
}