--- trunk/t/3-normalize-marc.t 2007/11/12 10:16:16 1035 +++ trunk/t/3-normalize-marc.t 2007/11/12 11:10:48 1036 @@ -50,36 +50,42 @@ }], }; -ok( _set_ds( $rec ), '_set_ds' ); +sub test_marc_template { + my $rec = shift; -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( _set_ds( $rec ), '_set_ds' ); -ok(my $marc = WebPAC::Normalize::_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 ;|v', + 'a.|p', + 'a, |x ; |v. |n, |p ; |v', + 'a ; |v. |p ; |v', + 'v', + ], + ), 'marc_template' ); -is_deeply( $marc, [ + ok(my $marc = WebPAC::Normalize::MARC::_get_marc_fields(), "_get_marc_fields"); + diag " _get_marc_fields = ",dump( $marc ) if $debug; + + return $marc; +} + +my $marc_out = [ [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, " ", " ", "v", "v-9-1"], [440, " ", " ", "a", "a-2-1 ; ", "v", "v-2-1. ", "p", "i-2-1"], @@ -89,4 +95,24 @@ [440, " ", " ", "a", "a-6-1. ", "p", "i-6-1 ; ", "v", "w-6-1"], [440, " ", " ", "a", "a-7-1"], [440, " ", " ", "a", "a-8-1 ;", "v", "v-8-1"], -], 'is_deeply'); +]; + +is_deeply( test_marc_template($rec), $marc_out , 'is_deeply'); + +__END__ + +my $max_occ = $#{ $rec->{225} }; + +foreach my $from ( 0 .. $max_occ - 1 ) { + foreach my $to ( 1 .. $max_occ ) { + my $new_rec = { + 225 => [ splice( @{ $rec->{225} }, $from, $to ) ], + }; + diag "new_rec = ",dump( $new_rec ) if $debug; + + my $expect_marc = [ splice( @{ $marc_out }, $from, $to ) ]; + diag "expect_marc = ",dump( $expect_marc ) if $debug; + + is_deeply( [ test_marc_template($rec) ], $expect_marc, 'is_deeply'); + } +}