/[webpac2]/trunk/t/3-normalize-marc.t
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/t/3-normalize-marc.t

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1111 - (hide annotations)
Sat Sep 6 10:54:25 2008 UTC (15 years, 8 months ago) by dpavlin
File MIME type: application/x-troff
File size: 7536 byte(s)
a bit more work on marc_clone on some real records

1 dpavlin 1021 #!/usr/bin/perl -w
2    
3     use strict;
4     use blib;
5    
6 dpavlin 1109 use Test::More tests => 330;
7 dpavlin 1021
8     BEGIN {
9     use_ok( 'WebPAC::Test' );
10     use_ok( 'WebPAC::Normalize' );
11     use_ok( 'WebPAC::Normalize::MARC' );
12     }
13    
14 dpavlin 1037 _debug( $debug - 1 ) if $debug > 1;
15    
16 dpavlin 1021 my $rec = {
17     '225' => [{
18     'a' => 'a-1-1',
19     'i' => 'i-1-1',
20     'v' => 'v-1-1',
21     'w' => 'w-1-1',
22     'h' => 'h-1-1',
23     'x' => 'x-1-1',
24     },{
25     'a' => 'a-2-1',
26     'v' => 'v-2-1',
27     'i' => 'i-2-1',
28     },{
29     'a' => 'a-3-1',
30     'i' => 'i-3-1',
31     'v' => 'v-3-1',
32     },{
33     'a' => 'a-4-1',
34     'v' => 'v-4-1',
35     'i' => 'i-4-1',
36     'w' => 'w-4-1',
37     },{
38 dpavlin 1026 'a' => 'a-5-1',
39     'v' => 'v-5-1',
40     'i' => 'i-5-1',
41 dpavlin 1021 },{
42 dpavlin 1026 'a' => 'a-6-1',
43     'i' => 'i-6-1',
44     'w' => 'w-6-1',
45     },{
46     'a' => 'a-7-1',
47 dpavlin 1029 },{
48     'a' => 'a-8-1',
49     'v' => 'v-8-1',
50     },{
51     'v' => 'v-9-1',
52 dpavlin 1062 },{
53     'v' => '0',
54 dpavlin 1021 }],
55     };
56    
57 dpavlin 1036 sub test_marc_template {
58     my $rec = shift;
59 dpavlin 1021
60 dpavlin 1038 ok( _clean_ds(), '_clean_ds' );
61 dpavlin 1036 ok( _set_ds( $rec ), '_set_ds' );
62 dpavlin 1021
63 dpavlin 1047 ok( marc_indicators( 440, '0', '1' ), 'marc_indicators' );
64    
65 dpavlin 1036 ok( marc_template(
66     from => 225, to => 440,
67     subfields_rename => [
68     'a' => 'a',
69     'x' => 'x',
70     'v' => 'v',
71     'h' => 'n',
72     'i' => 'p',
73     'w' => 'v',
74     ],
75     isis_template => [
76     'a ; |v. |i',
77     'a. |i ; |w',
78     ],
79     marc_template => [
80     'a',
81     'a ;|v',
82     'a.|p',
83     'a, |x ; |v. |n, |p ; |v',
84     'a ; |v. |p ; |v',
85     'v',
86     ],
87     ), 'marc_template' );
88 dpavlin 1021
89 dpavlin 1036 ok(my $marc = WebPAC::Normalize::MARC::_get_marc_fields(), "_get_marc_fields");
90     diag " _get_marc_fields = ",dump( $marc ) if $debug;
91    
92 dpavlin 1047 ok( marc_indicators( 440, 'x', 'y' ), 'marc_indicators' );
93    
94 dpavlin 1036 return $marc;
95     }
96    
97     my $marc_out = [
98 dpavlin 1047 [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"],
99     [440, "0", "1", "a", "a-2-1 ; ", "v", "v-2-1. ", "p", "i-2-1"],
100     [440, "0", "1", "a", "a-3-1 ; ", "v", "v-3-1. ", "p", "i-3-1"],
101     [440, "0", "1", "a", "a-4-1 ; ", "v", "v-4-1. ", "p", "i-4-1 ; ", "v", "w-4-1"],
102     [440, "0", "1", "a", "a-5-1 ; ", "v", "v-5-1. ", "p", "i-5-1"],
103     [440, "0", "1", "a", "a-6-1. ", "p", "i-6-1 ; ", "v", "w-6-1"],
104     [440, "0", "1", "a", "a-7-1"],
105     [440, "0", "1", "a", "a-8-1 ;", "v", "v-8-1"],
106     [440, "0", "1", "v", "v-9-1"],
107 dpavlin 1062 [440, 0, 1, "v", 0],
108 dpavlin 1036 ];
109    
110     is_deeply( test_marc_template($rec), $marc_out , 'is_deeply');
111    
112     my $max_occ = $#{ $rec->{225} };
113    
114     foreach my $from ( 0 .. $max_occ - 1 ) {
115 dpavlin 1038 foreach my $to ( $from + 1 .. $max_occ ) {
116     my @orig_rec = @{ $rec->{225} };
117 dpavlin 1036 my $new_rec = {
118 dpavlin 1038 225 => [ splice( @orig_rec, $from, $to ) ],
119 dpavlin 1036 };
120 dpavlin 1038 diag "$from-$to new_rec = ",dump( $new_rec ) if $debug;
121 dpavlin 1036
122 dpavlin 1038 my @expect = @$marc_out;
123     my $expect_marc = [ splice( @expect, $from, $to ) ];
124     diag "$from-$to expect_marc = ",dump( $expect_marc ) if $debug;
125    
126     is_deeply( test_marc_template($new_rec), $expect_marc, "$from-$to is_deeply");
127    
128 dpavlin 1036 }
129     }
130 dpavlin 1108
131     sub test_marc_clone {
132 dpavlin 1109 my ( $rec, $expect ) = @_;
133 dpavlin 1108
134     ok( _clean_ds(), '_clean_ds' );
135     ok( _set_ds( $rec ), '_set_ds' );
136    
137 dpavlin 1109 ok( ! marc_clone, 'marc_clone' );
138 dpavlin 1108
139     ok(my $marc = WebPAC::Normalize::MARC::_get_marc_fields(), "_get_marc_fields");
140 dpavlin 1109 # diag "rec = ",dump( $rec );
141     # diag "marc = ",dump( $marc );
142     # diag "expect = ",dump( $marc );
143 dpavlin 1108
144 dpavlin 1109 is_deeply( $marc, $expect, 'marc_clone same' );
145 dpavlin 1108
146     }
147    
148 dpavlin 1111 my $rec = {
149     "000" => [2, 2],
150     "001" => ["ocm00734950 "],
151     "003" => ["OCoLC"],
152     "005" => ["19830824185243.0"],
153     "008" => ["731105s1962 nyua a 00000 eng "],
154     "010" => [
155     { a => " 62015770 ", i1 => " ", i2 => " ", subfields => ["a", 0] },
156     ],
157     "040" => [
158     {
159     a => "DLC",
160     c => "BOS",
161     d => "TML",
162     i1 => " ",
163     i2 => " ",
164     subfields => ["a", 0, "c", 0, "d", 0, "d", 1, "d", 2],
165     },
166     ],
167     "041" => [{ a => "engfre", i1 => 1, i2 => " ", subfields => ["a", 0] }],
168     "049" => [{ a => "TMLM", i1 => " ", i2 => " ", subfields => ["a", 0] }],
169     "050" => [
170     {
171     a => "RC340",
172     b => ".P513 1806a",
173     i1 => 0,
174     i2 => " ",
175     subfields => ["a", 0, "b", 0],
176     },
177     ],
178     "096" => [
179     { a => "WM 11 P653t 1962", i1 => " ", i2 => " ", subfields => ["a", 0] },
180     ],
181     100 => [
182     {
183     a => "Pinel, Philippe,",
184     d => "1745-1826.",
185     i1 => 1,
186     i2 => 0,
187     subfields => ["a", 0, "d", 0],
188     },
189     ],
190     245 => [
191     {
192     1 => 2,
193     a => "A treatise on insanity /",
194     c => "translated from the French by D. D. Davis, with an introd. by Paul F. Cranefield.",
195     subfields => [1, 0, "a", 0, "c", 0],
196     },
197     ],
198     260 => [
199     {
200     a => "New York :",
201     b => "Published under the auspices of the Library of the New York Academy of Medicine by Hafner Pub. Co.,",
202     c => "1962.",
203     i1 => 0,
204     i2 => " ",
205     subfields => ["a", 0, "b", 0, "c", 0],
206     },
207     ],
208     300 => [
209     {
210     a => "lv, 288 p. :",
211     b => "ill. ;",
212     c => "21 cm.",
213     i1 => " ",
214     i2 => " ",
215     subfields => ["a", 0, "b", 0, "c", 0],
216     },
217     ],
218     440 => [
219     {
220     a => "History of medicine ;",
221     i1 => " ",
222     i2 => 0,
223     subfields => ["a", 0, "v", 0],
224     v => "no. 14",
225     },
226     ],
227     500 => [
228     {
229     a => "\"Facsimile of the London 1806 edition.\"",
230     i1 => " ",
231     i2 => " ",
232     subfields => ["a", 0],
233     },
234     {
235     a => "Translation of: Traite medico-philosophique sur l'alienation mentale.",
236     i1 => " ",
237     i2 => " ",
238     subfields => ["a", 0],
239     },
240     ],
241     590 => [
242     {
243     a => "L21942,WM ,purc, 10.00,rtr,1-78",
244     i1 => " ",
245     i2 => " ",
246     subfields => ["a", 0],
247     },
248     ],
249     650 => [
250     { " " => 2, a => "Psychiatry", subfields => [" ", 0, "a", 0] },
251     { " " => 2, a => "Mental Disorders", subfields => [" ", 0, "a", 0] },
252     ],
253     852 => [
254     {
255     8 => ".1",
256     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`",
257     b => "LU GENCOL",
258     d => "TWO WEEKS",
259     h => "WM 11 P653t 1962",
260     i => 43,
261     i1 => " ",
262     i2 => " ",
263     o => "available",
264     p => "R04CZ4",
265     subfields => [8, 0, "b", 0, "h", 0, "t", 0, "p", 0, "i", 0, "d", 0, "o", 0, 9, 0],
266     t => 1,
267     },
268     ],
269     911 => [{ a => 61, i1 => " ", i2 => " ", subfields => ["a", 0] }],
270     979 => [
271     {
272     a => "USERS",
273     b => 19831011,
274     c => "TAPE",
275     d => "ARCH",
276     i1 => " ",
277     i2 => " ",
278     subfields => ["a", 0, "b", 0, "c", 0, "d", 0],
279     },
280     ],
281     leader => ["01237cam 2200301Ii 4500"],
282     };
283    
284     test_marc_clone( $rec, [
285 dpavlin 1109 [900, " ", " ", "a", "900a", "b", "900b"],
286     [901, " ", " ", "c", "901c"],
287     ] );
288 dpavlin 1108

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.26