#!/bin/perl -w use strict; use Test::More tests => 6; use DateTime; use DateTime::Event::ICal; { my $dt1 = new DateTime( year => 2003, month => 4, day => 28, hour => 12, minute => 10, second => 45, nanosecond => 123456, time_zone => 'UTC' ); my $dt2 = new DateTime( year => 2003, month => 5, day => 01, hour => 12, minute => 10, second => 45, nanosecond => 123456, time_zone => 'UTC' ); my ( $set, @dt, $r ); # DAILY $set = DateTime::Event::ICal->recur( freq => 'daily' ); @dt = $set->as_list( start => $dt1, end => $dt2 ); $r = join(' ', map { $_->datetime } @dt); is( $r, '2003-04-29T00:00:00 2003-04-30T00:00:00 2003-05-01T00:00:00', "daily without args" ); # SECONDLY $set = DateTime::Event::ICal->recur( freq => 'secondly' ); @dt = $set->as_list( start => $dt1, end => $dt1->clone->add( seconds => 2 ) ); $r = join(' ', map { $_->datetime } @dt); is( $r, '2003-04-28T12:10:46 2003-04-28T12:10:47', "secondly" ); # MINUTELY $set = DateTime::Event::ICal->recur( freq => 'minutely', dtstart => $dt1 ); @dt = $set->as_list( start => $dt1, end => $dt1->clone->add( minutes => 2 ) ); $r = join(' ', map { $_->datetime } @dt); is( $r, '2003-04-28T12:11:45 2003-04-28T12:12:45', "minutely and dtstart" ); # HOURLY $set = DateTime::Event::ICal->recur( freq => 'hourly', dtstart => $dt1, bysecond => [ 1, 3 ] ); @dt = $set->as_list( start => $dt1, end => $dt1->clone->add( hours => 2 ) ); $r = join(' ', map { $_->datetime } @dt); is( $r, '2003-04-28T13:10:01 2003-04-28T13:10:03 '. '2003-04-28T14:10:01 2003-04-28T14:10:03', "hourly, dtstart, bysecond" ); # MONTHLY $set = DateTime::Event::ICal->recur( freq => 'monthly', dtstart => $dt1, ); @dt = $set->as_list( start => $dt1, end => $dt1->clone->add( months => 2 ) ); $r = join(' ', map { $_->datetime } @dt); is( $r, '2003-05-28T12:10:45 2003-06-28T12:10:45', "monthly, dtstart" ); # MONTHLY BYMONTHDAY $set = DateTime::Event::ICal->recur( freq => 'monthly', dtstart => $dt1, bymonthday => [ 1, 3 ] ); @dt = $set->as_list( start => $dt1, end => $dt1->clone->add( months => 2 ) ); $r = join(' ', map { $_->datetime } @dt); is( $r, '2003-05-01T12:10:45 2003-05-03T12:10:45 '. '2003-06-01T12:10:45 2003-06-03T12:10:45', "monthly, dtstart, bymonthday" ); }