XML-RSS-Timing

 view release on metacpan or  search on metacpan

t/030_skip.t  view on Meta::CPAN


require 5;
use strict;
use Test;
BEGIN { plan tests => 65 }

#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 @skipHours;
my @skipDays;

sub skipHours { @skipHours = @_; print "# skipHours: @skipHours\n" };
sub skipDays  { @skipDays  = @_; print "# skipDays:  @skipDays\n" };

sub S ($$) {
  my $x = XML::RSS::Timing->new;
  my($now, $next) = @_;
  $x->use_exceptions(0);
  $x->lastPolled( $x->_iso_date_to_epoch( $now ) );
  $x->skipHours(@skipHours);
  $x->skipDays( @skipDays );
  my $out = $x->nextUpdate;
  $out = join '', "ERR(", $x->complaints, ")" unless defined $out;

  if( $next =~ m/:/s ) {
    $next = $x->_iso_date_to_epoch($next)
  } elsif($next =~ m/^\d+$/) {
    $next += $E1970;
  }
  
  return  $out, $next, "skiphours @skipHours / skipdays @skipDays";
}

&ok(S '1970-01-01T00:00',     0);
&ok(S '1970-01-01T01:00',  3600);

# Now with some irrelevent constraints
skipHours(   2 .. 23 );
skipDays(qw( Tuesday  ));
&ok(S '1970-01-01T00:00',     0);
&ok(S '1970-01-01T01:00',  3600);
&ok(S '1970-01-01T00:51', 51*60);

# To note: 1970-01-01 was a Thursday

# Now with a relevent hour constraint
skipHours(   1 );
skipDays(qw( Tuesday  ));
&ok(S '1970-01-01T00:00',     0);
&ok(S '1970-01-01T00:51', 51*60);
&ok(S '1970-01-01T01:00',2*3600);
&ok(S '1970-01-01T01:43',2*3600);

skipHours(   1, 2 );
skipDays(qw( Tuesday  ));
&ok(S '1970-01-01T00:00',     0);
&ok(S '1970-01-01T00:51', 51*60);
&ok(S '1970-01-01T01:00',3*3600);
&ok(S '1970-01-01T01:43',3*3600);
&ok(S '1970-01-01T02:00',3*3600);
&ok(S '1970-01-01T02:59',3*3600);

# and with an off-kilter base
skipHours(   1, 2 );
skipDays(qw( Tuesday  ));
&ok(S '1970-01-01T00:51', 51*60);
&ok(S '1970-01-01T01:00',3*3600);
&ok(S '1970-01-01T01:43',3*3600);
&ok(S '1970-01-01T02:00',3*3600);
&ok(S '1970-01-01T02:59',3*3600);

# Now with a relevent day, irrelevent hour
skipHours(   9, 10 );
skipDays(qw( Thursday  ));
&ok(S '1970-01-01T00:23', 1 * 24 * 60 * 60);



( run in 1.214 second using v1.01-cache-2.11-cpan-e1769b4cff6 )