#!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' ); }