XML-RSS-Timing
view release on metacpan or search on metacpan
t/020_next.t view on Meta::CPAN
require 5;
use strict;
use Test;
BEGIN { plan tests => 33 }
#sub XML::RSS::Timing::DEBUG () {10}
use XML::RSS::Timing;
print "# I'm testing XML::RSS::Timing version $XML::RSS::Timing::VERSION\n";
ok 1;
print "# Required OK.\n";
use Time::Local;
my $E1970 = timegm(0,0,0,1,0,70);
ok 1;
print "# E1970 = $E1970 s (", scalar(gmtime($E1970)), ")\n";
my $now;
sub setnow {
$now = XML::RSS::Timing->_iso_date_to_epoch($_[0]);
print "# Setting now to $now = $_[0] = ", scalar(gmtime($now)), "\n";
}
sub n ($$) {
my $x = XML::RSS::Timing->new;
$x->lastPolled($now);
my($temp, $next) = @_;
my($base, $period, $freq) = ($temp =~ m/(\S+)/sg) ;
$x->use_exceptions(0);
#print "base{$base} per{$period} freq{$freq}\n";
$x->updateBase($base);
$x->updatePeriod($period);
$x->updateFrequency($freq) if $freq;
my $out = $x->nextUpdate;
$out = join '', "ERR(", $x->complaints, ")" unless defined $out;
$next = $x->_iso_date_to_epoch($next) if $next =~ m/:/s;
return $out, $next, "from $temp given now=$now";
}
setnow('1970-01-01T00:00');
&ok(n '1970-01-01T00:00 hourly', '1970-01-01T01:00');
&ok(n '1970-01-01T00:00 daily', '1970-01-02T00:00');
&ok(n '1970-01-01T00:00 weekly', '1970-01-08T00:00');
&ok(n '1970-01-01T00:00 hourly 1', '1970-01-01T01:00');
&ok(n '1970-01-01T00:00 daily 1', '1970-01-02T00:00');
&ok(n '1970-01-01T00:00 weekly 1', '1970-01-08T00:00');
setnow('2011-01-01T00:00');
&ok(n '2011-01-01T00:00 hourly', '2011-01-01T01:00');
&ok(n '2011-01-01T00:00 daily', '2011-01-02T00:00');
&ok(n '2011-01-01T00:00 weekly', '2011-01-08T00:00');
&ok(n '2011-01-01T00:00 hourly 1', '2011-01-01T01:00');
&ok(n '2011-01-01T00:00 daily 1', '2011-01-02T00:00');
&ok(n '2011-01-01T00:00 weekly 1', '2011-01-08T00:00');
&ok(n '2011-01-01T00:00 hourly 2', '2011-01-01T00:30');
&ok(n '2011-01-01T00:00 daily 2', '2011-01-01T12:00');
&ok(n '2011-01-01T00:00 weekly 2', '2011-01-04T12:00');
&ok(n '2011-01-01T00:00 hourly 3', '2011-01-01T00:20');
&ok(n '2011-01-01T00:00 daily 3', '2011-01-01T08:00');
&ok(n '2011-01-01T00:00 weekly 3', '2011-01-03T08:00');
setnow('2011-05-20T01:00');
&ok(n '2011-05-20T00:00 hourly 3', '2011-05-20T01:20');
&ok(n '2011-05-20T00:00 daily 3', '2011-05-20T08:00');
&ok(n '2011-05-20T00:00 weekly 3', '2011-05-22T08:00');
&ok(n '2011-05-19T00:00 hourly 1', '2011-05-20T02:00');
&ok(n '2011-05-19T00:00 daily 1', '2011-05-21T00:00');
&ok(n '2011-05-19T00:00 weekly 1', '2011-05-26T00:00');
&ok(n '2011-05-19T00:13 hourly 1', '2011-05-20T01:13');
&ok(n '2011-05-19T00:13 daily 1', '2011-05-21T00:13');
&ok(n '2011-05-19T00:13 weekly 1', '2011-05-26T00:13');
&ok(n '2011-05-19T00:13 hourly 3', '2011-05-20T01:13');
&ok(n '2011-05-19T00:13 daily 3', '2011-05-20T08:13');
&ok(n '2011-05-19T00:13 weekly 3', '2011-05-21T08:13');
( run in 1.417 second using v1.01-cache-2.11-cpan-e1769b4cff6 )