#!perl -w =head1 NAME 006errorchecks.t -- Tests to ensure MARC::Errorchecks::check_006 subroutine works as expected. =head1 TO DO Add tests for serials 006. =cut use strict; use Test::More tests=>60; BEGIN { use_ok( 'MARC::Record' ); } BEGIN { use_ok( 'MARC::Errorchecks' ); } print "MARC::Errorchecks version $MARC::Errorchecks::VERSION\n"; ################################################### my @bad006s = ( #too short q{a 000 0}, #too long q{a 000 0 }, ############### # books 01-17 # ############### #illustrations q{aq 000 0 }, #audience q{a h 000 0 }, #form of item q{a e 000 0 }, #contents q{a x 000 0 }, #govt pub q{a b000 0 }, #conference q{a a00 0 }, #festschrift q{a 0a0 0 }, #index q{a 00a 0 }, #obsolete 32 q{a 00000 }, #literary form q{a 000 b }, #bio q{a 000 0t}, ######################## # Electronic resources # ######################## #undefined 18-21 q{ma i }, #audience q{m h i }, #form of item 23 q{m a i }, #undefined 24-25 q{m a i }, #type of file q{m k }, #undefined 27 q{m ia }, #govt pub q{m i 0 }, #undefined 29-34 q{m i 0 }, ###################### # cartographic 18-34 # ###################### #relief q{eh e 0 }, #projection q{e ee e 0 }, #undefined 24 q{e ze 0 }, #type of map q{e h 0 }, #undefined 26-27 q{e ef 0 }, #govt pub q{e e r 0 }, #form of item q{e e e 0 }, #undefined 30 q{e e a0 }, #index q{e e z }, #undefined 32 q{e e 0z }, #special format q{e e 0 d}, ############################# # music and sound rec 18-34 # ############################# #form of comp q{cabz }, #format of music q{czzp }, #music parts q{czzza }, #audience q{czzz h }, #form of item q{czzz e }, #accompanying material q{czzz abcijr }, #lit text sound rec q{czzz qs }, #undefined 32 q{czzz s }, #transposition q{czzz d }, #undefined 34 q{czzz a}, #################### # visual materials # #################### #running time q{g0n0 vl}, #undefined 21 q{g010a vl}, #audience q{g010 h vl}, #undefined 23-27 q{g010 abcdg vl}, #govt pub q{g010 b vl}, #form of item q{g010 e vl}, #undefined 30-32 q{g010 abcvl}, #type of material q{g010 el}, #technique q{g010 vb}, ################### # mixed materials # ################### #undefined 18-22 q{pabcde }, #form of item q{p e }, #undefined 24-34 q{p abcdefghijk}, ); ################################################### #006 byte checking returned errors may change in future version my @expected = ( #short q{006: Must be 18 bytes long but is 17 bytes long (a 000 0).}, #long q{006: Must be 18 bytes long but is 19 bytes long (a 000 0 ).}, #books 01-17 q{006: Byte(s) 01-04, Books-Illustrations has bad characters (q ).}, q{006: Byte(s) 05, Books-Audience has bad characters (h).}, q{006: Byte(s) 06, Books-Form of item has bad characters (e).}, q{006: Byte(s) 07-10, Books-Contents has bad characters (x ).}, q{006: Byte(s) 11, Books-Govt publication has bad characters (b).}, q{006: Byte(s) 12, Books-Conference publication has bad characters (a).}, q{006: Byte(s) 13, Books-Festschrift has bad characters (a).}, q{006: Byte(s) 14, Books-Index has bad characters (a).}, q{006: Byte(s) 15, Books-Obsoletebyte32 has bad characters (0).}, q{006: Byte(s) 16, Books-Literary form has bad characters (b).}, q{006: Byte(s) 17, Books-Biography has bad characters (t).}, #electronic resources 01-17 q{006: Byte(s) 01-04, Electronic Resources-Undef18to21 has bad characters (a ).}, q{006: Byte(s) 05, Electronic Resources-Audience has bad characters (h).}, q{006: Byte(s) 06, Electronic Resources-FormofItem has bad characters (a).}, q{006: Byte(s) 07-08, Electronic Resources-Undef24to25 has bad characters (a ).}, q{006: Byte(s) 09, Electronic Resources-Type of file has bad characters (k).}, q{006: Byte(s) 10, Electronic Resources-Undef27 has bad characters (a).}, q{006: Byte(s) 11, Electronic Resources-Govt publication has bad characters (0).}, q{006: Byte(s) 12-17, Electronic Resources-Undef29to34 has bad characters (0 ).}, #cartographic 18-34 q{006: Byte(s) 01-04, Cartographic-Relief has bad characters (h ).}, q{006: Byte(s) 05-06, Cartographic-Projection has bad characters (ee).}, q{006: Byte(s) 7, Cartographic-Undef24 has bad characters (z).}, q{006: Byte(s) 08, Cartographic-Type of map has bad characters (h).}, q{006: Byte(s) 09-10, Cartographic-Undef26to27 has bad characters (f ).}, q{006: Byte(s) 11, Cartographic-Govt publication has bad characters (r).}, q{006: Byte(s) 12, Cartographic-Form of item has bad characters (e).}, q{006: Byte(s) 13, Cartographic-Undef30 has bad characters (a).}, q{006: Byte(s) 14, Cartographic-Index has bad characters (z).}, q{006: Byte(s) 15, Cartographic-Undef32 has bad characters (z).}, q{006: Byte(s) 16-17, Cartographic-Special format characteristics has bad characters ( d).}, #music and sound rec 18-34 q{006: Byte(s) 01-02, Music-Form of composition has bad characters (ab).}, q{006: Byte(s) 03, Music-Format of music has bad characters (p).}, q{006: Byte(s) 04, Music-Parts has bad characters (a).}, q{006: Byte(s) 05, Music-Audience has bad characters (h).}, q{006: Byte(s) 06, Music-Form of item has bad characters (e).}, q{006: Byte(s) 07-12, Music-Accompanying material has bad characters (abcijr).}, q{006: Byte(s) 13-14, Music-Text for sound recordings has bad characters (qs).}, q{006: Byte(s) 15, Music-Undef32 has bad characters (s).}, q{006: Byte(s) 16, Music-Transposition and arrangement has bad characters (d).}, q{006: Byte(s) 17, Music-Undef34 has bad characters (a).}, #visual materials q{006: Byte(s) 01-03, Visual materials-Runningtime has bad characters (0n0).}, q{006: Byte(s) 04, Visual materials-Undef21 has bad characters (a).}, q{006: Byte(s) 05, Visual materials-Audience has bad characters (h).}, q{006: Byte(s) 06-10, Visual materials-Undef23to27 has bad characters (abcdg).}, q{006: Byte(s) 11, Visual materials-Govt publication has bad characters (b).}, q{006: Byte(s) 12, Visual materials-Form of item has bad characters (e).}, q{006: Byte(s) 13-15, Visual materials-Undef30to32 has bad characters (abc).}, q{006: Byte(s) 16, Visual materials-Type of visual material has bad characters (e).}, q{006: Byte(s) 17, Visual materials-Technique has bad characters (b).}, #mixed materials q{006: Byte(s) 01-05, Mixed materials-Undef18to22 has bad characters (abcde).}, q{006: Byte(s) 06, Mixed materials-Form of item has bad characters (e).}, q{006: Byte(s) 07-17, Mixed materials-Undef24to34 has bad characters (abcdefghijk).}, #add more expected messages here # q{}, ); my $record = MARC::Record->new(); isa_ok( $record, 'MARC::Record', 'MARC record' ); $record->leader("00000nam 2200253 a 4500"); my $nfields = $record->add_fields( #control number so one is present ['001', "ttt06000001" ], #008 so one is present ['008', "060508s2006 ilu 000 0 eng d" ], ); is( $nfields, 2, "All the fields added OK" ); foreach my $bad006 (@bad006s) { my $field = MARC::Field->new( '006', $bad006 ); $record->append_fields($field); $nfields++; } #foreach 006 is( $nfields, 56, "All the fields added OK" ); my @errorstoreturn = (); push @errorstoreturn, (@{MARC::Errorchecks::check_006($record)}); while ( @errorstoreturn ) { my $expected = shift @expected; my $actual = shift @errorstoreturn; is( $actual, $expected, "Checking expected messages: $expected" ); } #while errors is( scalar @expected, 0, "All expected messages exhausted." ); #####