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


use strict;
use Test::More tests => 14;

use_ok( 'MARC::Record' );


# test to make sure leader is being populated properly

my $r = MARC::Record->new();
isa_ok( $r, 'MARC::Record' );
$r->append_fields( 
    MARC::Field->new( 
	245, 0, 0, a => 'Curious George battles the MARC leader'
    )
);

my $marc = $r->as_usmarc();
like( substr( $marc,0, 5 ), qr/^\d+$/, 'leader length' );
is( substr( $marc, 10, 1 ), '2', 'indicator count' );
is( substr( $marc, 11, 1 ), '2', 'subfield code count' );
like( substr( $marc, 12, 5 ), qr/^\d+$/, 'base address' );
is( substr( $marc, 20, 4 ), '4500', 'entry map' );


LEADER: {
    # setup
    my $r = MARC::Record->new();
    isa_ok( $r, 'MARC::Record' );
    $r->append_fields( MARC::Field->new( 245, 0, 0, a => 'MARC leader') );
    my $default = $r->leader();
    is( length($default), 24, 'default leader is the right length' );
    is( scalar($r->warnings()), 0, 'no warnings yet' );

    $r->leader( $default );
    is( scalar($r->warnings()), 0, 'no warnings yet' );

    $r->leader( substr($default, 0, -1) );
    is( scalar($r->warnings()), 1, 'got a warning about bogus leader' );

    # note that the warnings() call above cleared out all warnings, so
    # we're still expecting just one.
    is( scalar($r->warnings()), 0, 'no warnings yet' );
    $r->leader( $default . ' ' );
    is( scalar($r->warnings()), 1, 'got a warning about bogus leader' );
}