--- trunk/t/3-normalize-marc.t 2007/11/11 13:47:43 1026 +++ trunk/t/3-normalize-marc.t 2007/11/19 15:56:05 1047 @@ -3,7 +3,7 @@ use strict; use blib; -use Test::More tests => 7; +use Test::More tests => 262; BEGIN { use_ok( 'WebPAC::Test' ); @@ -11,6 +11,8 @@ use_ok( 'WebPAC::Normalize::MARC' ); } +_debug( $debug - 1 ) if $debug > 1; + my $rec = { '225' => [{ 'a' => 'a-1-1', @@ -42,43 +44,83 @@ 'w' => 'w-6-1', },{ 'a' => 'a-7-1', + },{ + 'a' => 'a-8-1', + 'v' => 'v-8-1', + },{ + 'v' => 'v-9-1', }], }; -ok( _set_ds( $rec ), '_set_ds' ); +sub test_marc_template { + my $rec = shift; + + ok( _clean_ds(), '_clean_ds' ); + ok( _set_ds( $rec ), '_set_ds' ); + + ok( marc_indicators( 440, '0', '1' ), 'marc_indicators' ); + + ok( marc_template( + from => 225, to => 440, + subfields_rename => [ + 'a' => 'a', + 'x' => 'x', + 'v' => 'v', + 'h' => 'n', + 'i' => 'p', + 'w' => 'v', + ], + isis_template => [ + 'a ; |v. |i', + 'a. |i ; |w', + ], + marc_template => [ + 'a', + 'a ;|v', + 'a.|p', + 'a, |x ; |v. |n, |p ; |v', + 'a ; |v. |p ; |v', + 'v', + ], + ), 'marc_template' ); + + ok(my $marc = WebPAC::Normalize::MARC::_get_marc_fields(), "_get_marc_fields"); + diag " _get_marc_fields = ",dump( $marc ) if $debug; -ok( marc_template( - from => 225, to => 440, - subfields_rename => [ - 'a' => 'a', - 'x' => 'x', - 'v' => 'v', - 'h' => 'n', - 'i' => 'p', - 'w' => 'v', - ], - isis_template => [ - 'a ; |v. |i', - 'a. |i ; |w', - ], - marc_template => [ - 'a', - 'a, |x ; |v. |n, |p ; |v', - 'a ; |v. |p ; |v', - ], -), 'marc_template' ); - -ok(my $marc = WebPAC::Normalize::_get_marc_fields(), "_get_marc_fields"); -diag dump( $marc ) if $debug; - -is_deeply( $marc, - [ - [440, " ", " ", "a", "a-1-1", "x", "x-1-1", "v", "v-1-1", "n", "h-1-1", "p", "i-1-1", "v", "w-1-1", ], - [440, " ", " ", "a", "a-2-1", "v", "v-2-1", "p", "i-2-1"], - [440, " ", " ", "a", "a-3-1", "v", "v-3-1", "p", "i-3-1"], - [440, " ", " ", "a", "a-4-1", "v", "v-4-1", "p", "i-4-1", "v", "w-4-1"], - [440, " ", " ", "a", "a-5-1", "v", "v-5-1", "p", "i-5-1"], - [440, " ", " ", "a", "a-6-1", "p", "i-6-1", "v", "w-6-1"], - [440, " ", " ", "a", "a-7-1"], - ], -'is_deeply'); + ok( marc_indicators( 440, 'x', 'y' ), 'marc_indicators' ); + + return $marc; +} + +my $marc_out = [ + [440, "0", "1", "a", "a-1-1, ", "x", "x-1-1 ; ", "v", "v-1-1. ", "n", "h-1-1, ", "p", "i-1-1 ; ", "v", "w-1-1"], + [440, "0", "1", "a", "a-2-1 ; ", "v", "v-2-1. ", "p", "i-2-1"], + [440, "0", "1", "a", "a-3-1 ; ", "v", "v-3-1. ", "p", "i-3-1"], + [440, "0", "1", "a", "a-4-1 ; ", "v", "v-4-1. ", "p", "i-4-1 ; ", "v", "w-4-1"], + [440, "0", "1", "a", "a-5-1 ; ", "v", "v-5-1. ", "p", "i-5-1"], + [440, "0", "1", "a", "a-6-1. ", "p", "i-6-1 ; ", "v", "w-6-1"], + [440, "0", "1", "a", "a-7-1"], + [440, "0", "1", "a", "a-8-1 ;", "v", "v-8-1"], + [440, "0", "1", "v", "v-9-1"], +]; + +is_deeply( test_marc_template($rec), $marc_out , 'is_deeply'); + +my $max_occ = $#{ $rec->{225} }; + +foreach my $from ( 0 .. $max_occ - 1 ) { + foreach my $to ( $from + 1 .. $max_occ ) { + my @orig_rec = @{ $rec->{225} }; + my $new_rec = { + 225 => [ splice( @orig_rec, $from, $to ) ], + }; + diag "$from-$to new_rec = ",dump( $new_rec ) if $debug; + + my @expect = @$marc_out; + my $expect_marc = [ splice( @expect, $from, $to ) ]; + diag "$from-$to expect_marc = ",dump( $expect_marc ) if $debug; + + is_deeply( test_marc_template($new_rec), $expect_marc, "$from-$to is_deeply"); + + } +}