The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

require 5;
use strict;
use Test;

#sub XML::RSS::TimingBot::DEBUG(){5}
use XML::RSS::TimingBot;

BEGIN { plan tests => 15 }

print "# Using XML::RSS::TimingBot v$XML::RSS::TimingBot::VERSION\n";
ok 1;
print "# Hi, I'm ", __FILE__, " ...\n";

my $ua;

sub new_ua {
  print "# New ua... at ", join(' ', caller), "\n";
  $ua = XML::RSS::TimingBot->new;
  require File::Spec;
  $ua->{'_dbpath'} = File::Spec->curdir;
}

my $url = "http://interglacial.com/rss/rss.rss?test$^T";
{my $more = 100;
  sub another_url { return $url . ($more++); }
}

my $response;

new_ua();
$response = $ua->get( $url );
print "# Got: ", $response->status_line, "\n";
ok $response->code, '200';

$ua->commit;

new_ua();
$response = $ua->get( $url );
print "# Got: ", $response->status_line, "\n";
ok $response->code, '304';
ok $response->status_line, '/change until/';

$ua->commit;

new_ua();
$response = $ua->get( $url );
print "# Got: ", $response->status_line, "\n";
ok $response->code, '304';
ok $response->status_line, '/change until/';


new_ua();
$response = $ua->get( $url );
print "# Got: ", $response->status_line, "\n";
ok $response->code, '304';
ok $response->status_line, '/change until/';


$response = $ua->get( another_url );
print "# Got: ", $response->status_line, "\n";
ok $response->code, '200';

$response = $ua->get( another_url );
print "# Got: ", $response->status_line, "\n";
ok $response->code, '200';


new_ua();
$response = $ua->get( $url );
print "# Got: ", $response->status_line, "\n";
ok $response->code, '304';
ok $response->status_line, '/change until/';

$ua->commit;



print "# Now with time-travel...\n";
new_ua();
$ua->{'_now_hack'} = time() + 400 * 24 * 60 * 60; # more than a year from now
$response = $ua->get( $url );
print "# Got: ", $response->status_line, "\n";
ok $response->code, '304';
ok $response->status_line !~ m/change until/;


print "# ~ Bye! ~ \n";
ok 1;