--- trunk/t/3-normalize-marc.t 2007/11/12 11:57:00 1038 +++ trunk/t/3-normalize-marc.t 2008/09/06 10:54:25 1111 @@ -3,7 +3,7 @@ use strict; use blib; -use Test::More tests => 7; +use Test::More tests => 330; BEGIN { use_ok( 'WebPAC::Test' ); @@ -49,6 +49,8 @@ 'v' => 'v-8-1', },{ 'v' => 'v-9-1', + },{ + 'v' => '0', }], }; @@ -58,6 +60,8 @@ 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 => [ @@ -85,19 +89,22 @@ ok(my $marc = WebPAC::Normalize::MARC::_get_marc_fields(), "_get_marc_fields"); diag " _get_marc_fields = ",dump( $marc ) if $debug; + ok( marc_indicators( 440, 'x', 'y' ), 'marc_indicators' ); + 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, " ", " ", "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"], - [440, " ", " ", "a", "a-8-1 ;", "v", "v-8-1"], - [440, " ", " ", "v", "v-9-1"], + [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"], + [440, 0, 1, "v", 0], ]; is_deeply( test_marc_template($rec), $marc_out , 'is_deeply'); @@ -120,3 +127,162 @@ } } + +sub test_marc_clone { + my ( $rec, $expect ) = @_; + + ok( _clean_ds(), '_clean_ds' ); + ok( _set_ds( $rec ), '_set_ds' ); + + ok( ! marc_clone, 'marc_clone' ); + + ok(my $marc = WebPAC::Normalize::MARC::_get_marc_fields(), "_get_marc_fields"); +# diag "rec = ",dump( $rec ); +# diag "marc = ",dump( $marc ); +# diag "expect = ",dump( $marc ); + + is_deeply( $marc, $expect, 'marc_clone same' ); + +} + +my $rec = { + "000" => [2, 2], + "001" => ["ocm00734950 "], + "003" => ["OCoLC"], + "005" => ["19830824185243.0"], + "008" => ["731105s1962 nyua a 00000 eng "], + "010" => [ + { a => " 62015770 ", i1 => " ", i2 => " ", subfields => ["a", 0] }, + ], + "040" => [ + { + a => "DLC", + c => "BOS", + d => "TML", + i1 => " ", + i2 => " ", + subfields => ["a", 0, "c", 0, "d", 0, "d", 1, "d", 2], + }, + ], + "041" => [{ a => "engfre", i1 => 1, i2 => " ", subfields => ["a", 0] }], + "049" => [{ a => "TMLM", i1 => " ", i2 => " ", subfields => ["a", 0] }], + "050" => [ + { + a => "RC340", + b => ".P513 1806a", + i1 => 0, + i2 => " ", + subfields => ["a", 0, "b", 0], + }, + ], + "096" => [ + { a => "WM 11 P653t 1962", i1 => " ", i2 => " ", subfields => ["a", 0] }, + ], + 100 => [ + { + a => "Pinel, Philippe,", + d => "1745-1826.", + i1 => 1, + i2 => 0, + subfields => ["a", 0, "d", 0], + }, + ], + 245 => [ + { + 1 => 2, + a => "A treatise on insanity /", + c => "translated from the French by D. D. Davis, with an introd. by Paul F. Cranefield.", + subfields => [1, 0, "a", 0, "c", 0], + }, + ], + 260 => [ + { + a => "New York :", + b => "Published under the auspices of the Library of the New York Academy of Medicine by Hafner Pub. Co.,", + c => "1962.", + i1 => 0, + i2 => " ", + subfields => ["a", 0, "b", 0, "c", 0], + }, + ], + 300 => [ + { + a => "lv, 288 p. :", + b => "ill. ;", + c => "21 cm.", + i1 => " ", + i2 => " ", + subfields => ["a", 0, "b", 0, "c", 0], + }, + ], + 440 => [ + { + a => "History of medicine ;", + i1 => " ", + i2 => 0, + subfields => ["a", 0, "v", 0], + v => "no. 14", + }, + ], + 500 => [ + { + a => "\"Facsimile of the London 1806 edition.\"", + i1 => " ", + i2 => " ", + subfields => ["a", 0], + }, + { + a => "Translation of: Traite medico-philosophique sur l'alienation mentale.", + i1 => " ", + i2 => " ", + subfields => ["a", 0], + }, + ], + 590 => [ + { + a => "L21942,WM ,purc, 10.00,rtr,1-78", + i1 => " ", + i2 => " ", + subfields => ["a", 0], + }, + ], + 650 => [ + { " " => 2, a => "Psychiatry", subfields => [" ", 0, "a", 0] }, + { " " => 2, a => "Mental Disorders", subfields => [" ", 0, "a", 0] }, + ], + 852 => [ + { + 8 => ".1", + 9 => "`;11623`07/02/1991 08:09````````````````B^61^R04CZ4^^^^1^101^1^1000^^`1^11623^54969,29361^^`2^0^0^2^0^1^0^4`", + b => "LU GENCOL", + d => "TWO WEEKS", + h => "WM 11 P653t 1962", + i => 43, + i1 => " ", + i2 => " ", + o => "available", + p => "R04CZ4", + subfields => [8, 0, "b", 0, "h", 0, "t", 0, "p", 0, "i", 0, "d", 0, "o", 0, 9, 0], + t => 1, + }, + ], + 911 => [{ a => 61, i1 => " ", i2 => " ", subfields => ["a", 0] }], + 979 => [ + { + a => "USERS", + b => 19831011, + c => "TAPE", + d => "ARCH", + i1 => " ", + i2 => " ", + subfields => ["a", 0, "b", 0, "c", 0, "d", 0], + }, + ], + leader => ["01237cam 2200301Ii 4500"], +}; + +test_marc_clone( $rec, [ + [900, " ", " ", "a", "900a", "b", "900b"], + [901, " ", " ", "c", "901c"], +] ); +