#!/usr/bin/perl -w use strict; use Test::More; plan tests => 4; use DateTime; use DateTime::Set; # use warnings; #====================================================================== # next method #====================================================================== use constant INFINITY => 100 ** 100 ** 100 ; use constant NEG_INFINITY => -1 * (100 ** 100 ** 100); { my $set = DateTime::Set->from_recurrence ( next => sub { $_[0]->truncate( to => 'day' )->add( days => 1 ) } ); my $dt = DateTime->new( year => 2000, month => 10, day => 1, ); my $next_dt = $set->next($dt); is( $next_dt->ymd, '2000-10-02', 'next day is 2000-10-02' ); is( $set->next($next_dt)->ymd, '2000-10-03', 'next day is 2000-10-03' ); } { # previous-only recurrence my $set = DateTime::Set->from_recurrence ( previous => sub { $_[0]->truncate( to => 'day' )->subtract( days => 1 ) } ); my $dt = DateTime->new( year => 2000, month => 10, day => 1, ); my $next_dt = $set->next($dt); is( $next_dt->ymd, '2000-10-02', 'next day is 2000-10-02' ); is( $set->next($next_dt)->ymd, '2000-10-03', 'next day is 2000-10-03' ); }