#!/usr/bin/perl -w
use strict;
use Test::More tests => 21;
use DateTime::Format::ICal;
use DateTime::Span;
my $ical = 'DateTime::Format::ICal';
{
my $span = $ical->parse_period( '19920405T160708Z/19930405T160708Z' );
my $dt = $span->start;
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' );
$dt = $span->end;
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, 1993, "year accessor read is correct" );
is( $dt->time_zone->name, 'UTC', 'time zone should be UTC' );
is( $ical->format_datetime($dt), '19930405T160708Z', 'output should match input' );
my $str = $ical->format_period( $span );
is( $str, '19920405T160708Z/19930405T160708Z', 'period as datetimes' );
$str = $ical->format_period_with_duration( $span );
# weird result, but looks correct
is( $str, '19920405T160708Z/+PT31536001S', 'period as datetime and duration' );
$span = $ical->parse_period( $str );
is( $ical->format_period( $span ), '19920405T160708Z/19930405T160708Z', 'period as datetimes' );
}
{
my $span = $ical->parse_period( 'TZID=America/Chicago:00241121/+P2D' );
is( $ical->format_period( $span ),
'TZID=America/Chicago:00241121T000000/TZID=America/Chicago:00241123T000000',
'period as datetimes' );
is( $ical->format_period_with_duration( $span ),
'TZID=America/Chicago:00241121T000000/+PT172800S',
'period as datetime and duration' );
}