1#!/usr/bin/perl -w 2use strict; 3use lib './lib'; 4use Test::More tests => 12; 5 6use DateTime; 7use DateTime::Event::Cron; 8 9sub make_datetime { 10 @_ == 6 or die "Invalid argument count\n"; 11 DateTime->new( 12 year => $_[0], month => $_[1], day => $_[2], 13 hour => $_[3], minute => $_[4], second => $_[5], 14 time_zone => "America/New_York", 15 ); 16} 17 18sub dcomp { is(shift->datetime, shift->datetime, shift) } 19 20my($desc, $dtc, $old, $new, $date); 21 22$desc = "DST minute increment"; 23$dtc = DateTime::Event::Cron->new_from_cron("*/5 * * * *"); 24ok($dtc, "$desc create"); 25$old = make_datetime(2017, 3, 12, 1, 55, 0); 26$new = $dtc->next($old); 27$date = make_datetime(2017, 3, 12, 3, 0, 0); 28dcomp($new, $date, "$desc next"); 29 30$desc = "DST minute decrement"; 31$dtc = DateTime::Event::Cron->new_from_cron("*/5 * * * *"); 32ok($dtc, "$desc create"); 33$old = make_datetime(2017, 3, 12, 3, 0, 0); 34$new = $dtc->previous($old); 35$date = make_datetime(2017, 3, 12, 1, 55, 0); 36dcomp($new, $date, "$desc next"); 37 38$desc = "DST hour increment"; 39$dtc = DateTime::Event::Cron->new_from_cron("30 * * * *"); 40ok($dtc, "$desc create"); 41$old = make_datetime(2017, 3, 12, 1, 30, 0); 42$new = $dtc->next($old); 43$date = make_datetime(2017, 3, 12, 3, 30, 0); 44dcomp($new, $date, "$desc next"); 45 46$desc = "DST hour decrement"; 47$dtc = DateTime::Event::Cron->new_from_cron("30 * * * *"); 48ok($dtc, "$desc create"); 49$old = make_datetime(2017, 3, 12, 3, 30, 0); 50$new = $dtc->previous($old); 51$date = make_datetime(2017, 3, 12, 1, 30, 0); 52dcomp($new, $date, "$desc next"); 53 54$desc = "DST day increment"; 55$dtc = DateTime::Event::Cron->new_from_cron("30 2 * * *"); 56ok($dtc, "$desc create"); 57$old = make_datetime(2017, 3, 11, 2, 30, 0); 58$new = $dtc->next($old); 59$date = make_datetime(2017, 3, 13, 2, 30, 0); 60dcomp($new, $date, "$desc next"); 61 62$desc = "DST day decrement"; 63$dtc = DateTime::Event::Cron->new_from_cron("*/5 * * * *"); 64ok($dtc, "$desc create"); 65$old = make_datetime(2017, 3, 12, 3, 0, 0); 66$new = $dtc->previous($old); 67$date = make_datetime(2017, 3, 12, 1, 55, 0); 68dcomp($new, $date, "$desc next"); 69 70# End test 71