use strict; use warnings; use Test::More qw( no_plan ); use URI; use SRU::Utils::XMLTest qw( wellFormedXML ); use_ok( 'SRU::Request::SearchRetrieve' ); use_ok( 'SRU::Response' ); OK: { my $url = "http://myserver.com/myurl/?operation=searchRetrieve&version=1.1&query=dc.identifier+%3d%220-8212-1623-6%22&recordSchema=dc&recordPacking=XML&stylesheet=http://myserver.com/myStyle"; my $request = SRU::Request->newFromURI( $url ); isa_ok( $request, 'SRU::Request::SearchRetrieve' ); my $response = SRU::Response->newFromRequest( $request ); isa_ok( $response, 'SRU::Response::SearchRetrieve' ); is( $response->type(), 'searchRetrieve', 'type()' ); my $xml = $response->asXML(); ok( wellFormedXML($xml), "asXML()" ); is( $response->numberOfRecords(), 0, 'numberOfRecords is 0' ); ## add record #1 $response->addRecord( SRU::Response::Record->new( recordSchema => 'info:srw/schema/1/dc-v1.1', recordData => 'Huckleberry Finn' ) ); is( $response->numberOfRecords(), 1, 'numberOfRecords is 1' ); ## add record #2 $response->addRecord( SRU::Response::Record->new( recordSchema => 'info:srw/schema/1/dc-v1.1&', recordData => 'Huckle & berry & Finn' ) ); is( $response->numberOfRecords(), 2, 'numberOfRecords is 2' ); $xml = $response->asXML(); like( $xml, qr{21}, 'recordPosition() 1' ); like( $xml, qr{2}, 'recordPosition() 2' ); ok( wellFormedXML($xml), 'asXML() w/ records well formed' ); like( $xml, qr{\Q\E}, 'found stylsheet in XML' ); ## look for xCQL like( $xml, qr//, 'found xQuery tag' ); } SET_NUMBER_OF_RECORDS: { my $url = "http://myserver.com/myurl/?operation=searchRetrieve&version=1.1&query=dc.identifier+%3d%220-8212-1623-6%22&recordSchema=dc&recordPacking=XML&stylesheet=http://myserver.com/myStyle"; my $request = SRU::Request->newFromURI( $url ); isa_ok( $request, 'SRU::Request::SearchRetrieve' ); my $response = SRU::Response->newFromRequest( $request ); isa_ok( $response, 'SRU::Response::SearchRetrieve' ); is( $response->type(), 'searchRetrieve', 'type()' ); is( $response->numberOfRecords(), 0, 'numberOfRecords is 0' ); ## add record #1 $response->addRecord( SRU::Response::Record->new( recordSchema => 'info:srw/schema/1/dc-v1.1', recordData => 'Huckleberry Finn' ) ); is( $response->numberOfRecords(), 1, 'numberOfRecords is 1' ); ## add record #2 $response->addRecord( SRU::Response::Record->new( recordSchema => 'info:srw/schema/1/dc-v1.1&', recordData => 'Huckle & berry & Finn' ) ); is( $response->numberOfRecords(), 2, 'numberOfRecords is 2' ); ## explicitly set number of records $response->numberOfRecords( 500 ); is( $response->numberOfRecords(), 500, 'explicit set of numberOfRecords' ); }