The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More no_plan; 

use strict;
use warnings;

use_ok( 'Net::OAI::Harvester' );

my $h = Net::OAI::Harvester->new( 
    baseURL => 'http://memory.loc.gov/cgi-bin/oai2_0' 
);
isa_ok( $h, 'Net::OAI::Harvester', 'new()' );

my $l = $h->listIdentifiers( metadataPrefix => 'mods' );
isa_ok( $l, 'Net::OAI::ListIdentifiers', 'listIdentifiers()' );

ok( ! $l->errorCode(), 'errorCode()' );
ok( ! $l->errorString(), 'errorString()' );

while( my $h = $l->next() ) {
    isa_ok( $h, 'Net::OAI::Record::Header' ),
    ok( $h->identifier, "identifier() ".$h->identifier() );
    my @sets = $h->sets();
    ok( @sets >= 1, "sets() ".join( ";", @sets ) );
}

## resumption token

my $r = $l->resumptionToken();
isa_ok( $r, 'Net::OAI::ResumptionToken' );
ok( $r->token(), 'token() '.$r->token() );

## these may not return stuff but we must be able to call the methods
eval { $r->expirationDate() }; 
ok( ! $@, 'expirationDate()' );

eval { $r->completeListSize() };
ok( ! $@, 'completeListSize()' );

eval { $r->cursor() };
ok( ! $@, 'cursor()' );

## using from/until

$l = $h->listIdentifiers( 
    'metadataPrefix'	=> 'mods',
    'from'		=> '0005-01-01',
    'until'		=> '0005-01-02'
);

is( $l->errorCode(), 'noRecordsMatch', 'from/until' );