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

use strict;
use integer;

use File::Spec;

use Test::More 'no_plan';

BEGIN {
    use_ok( 'MARC::File::USMARC' );
}

my $filename = File::Spec->catfile( 't', 'filler.usmarc' );
my $file = MARC::File::USMARC->in( $filename );
isa_ok( $file, 'MARC::File::USMARC', 'opened the test file' );


my $marc;

# There are exactly three records in the file, and there are
# various problems with leading and trailing spaces, nulls,
# and newlines.  There should be no warnings or errors
# reading the file.

$marc = $file->next();
isa_ok( $marc, 'MARC::Record', 'got record 1' );
is( scalar $marc->fields(), 18, 'should be 18 fields' );
is( scalar $marc->warnings(), 0, 'should be 0 warnings' );
ok( !defined $MARC::Record::ERROR, 'should be no errors' );

$marc = $file->next();
isa_ok( $marc, 'MARC::Record', 'got record 2' );
is( scalar $marc->fields(), 18, 'should be 18 fields' );
is( scalar $marc->warnings(), 0, 'should be 0 warnings' );
ok( !defined $MARC::Record::ERROR, 'should be no errors' );

$marc = $file->next();
isa_ok( $marc, 'MARC::Record', 'got record 3' );
is( scalar $marc->fields(), 15, 'should be 15 fields' );
is( scalar $marc->warnings(), 0, 'should be 0 warnings' );
ok( !defined $MARC::Record::ERROR, 'should be no errors' );

# Last record has been read.  The only thing remaining
# before eof is a newline, which should be consumed
# by this next() and undef then returned because we're
# at the file eof.
$marc = $file->next();
ok( !defined $marc, 'no record, just eof' );
ok( !defined $MARC::Record::ERROR, 'should be no errors' );

$file->close;