r1610@llin: dpavlin | 2007-11-12 12:10:45 +0100
[webpac2] / t / 3-normalize-marc.t
1 #!/usr/bin/perl -w
2
3 use strict;
4 use blib;
5
6 use Test::More tests => 7;
7
8 BEGIN {
9         use_ok( 'WebPAC::Test' );
10         use_ok( 'WebPAC::Normalize' );
11         use_ok( 'WebPAC::Normalize::MARC' );
12 }
13
14 my $rec = {
15         '225' => [{
16                 'a' => 'a-1-1',
17                 'i' => 'i-1-1',
18                 'v' => 'v-1-1',
19                 'w' => 'w-1-1',
20                 'h' => 'h-1-1',
21                 'x' => 'x-1-1',
22         },{
23                 'a' => 'a-2-1',
24                 'v' => 'v-2-1',
25                 'i' => 'i-2-1',
26         },{
27                 'a' => 'a-3-1',
28                 'i' => 'i-3-1',
29                 'v' => 'v-3-1',
30         },{
31                 'a' => 'a-4-1',
32                 'v' => 'v-4-1',
33                 'i' => 'i-4-1',
34                 'w' => 'w-4-1',
35         },{
36                 'a' => 'a-5-1',
37                 'v' => 'v-5-1',
38                 'i' => 'i-5-1',
39         },{
40                 'a' => 'a-6-1',
41                 'i' => 'i-6-1',
42                 'w' => 'w-6-1',
43         },{
44                 'a' => 'a-7-1',
45         },{
46                 'a' => 'a-8-1',
47                 'v' => 'v-8-1',
48         },{
49                 'v' => 'v-9-1',
50         }],
51 };
52
53 sub test_marc_template {
54         my $rec = shift;
55
56         ok( _set_ds( $rec ), '_set_ds' );
57
58         ok( marc_template(
59                 from => 225, to => 440,
60                 subfields_rename => [
61                         'a' => 'a',
62                         'x' => 'x',
63                         'v' => 'v',
64                         'h' => 'n',
65                         'i' => 'p',
66                         'w' => 'v',
67                 ],
68                 isis_template => [
69                         'a ; |v. |i',
70                         'a. |i ; |w',
71                 ],
72                 marc_template => [
73                         'a',
74                         'a ;|v',
75                         'a.|p',
76                         'a, |x ; |v. |n, |p ; |v',
77                         'a ; |v. |p ; |v',
78                         'v',
79                 ],
80         ), 'marc_template' );
81
82         ok(my $marc = WebPAC::Normalize::MARC::_get_marc_fields(), "_get_marc_fields");
83         diag " _get_marc_fields = ",dump( $marc ) if $debug;
84
85         return $marc;
86 }
87
88 my $marc_out = [
89         [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"],
90         [440, " ", " ", "v", "v-9-1"],
91         [440, " ", " ", "a", "a-2-1 ; ", "v", "v-2-1. ", "p", "i-2-1"],
92         [440, " ", " ", "a", "a-3-1 ; ", "v", "v-3-1. ", "p", "i-3-1"],
93         [440, " ", " ", "a", "a-4-1 ; ", "v", "v-4-1. ", "p", "i-4-1 ; ", "v", "w-4-1"],
94         [440, " ", " ", "a", "a-5-1 ; ", "v", "v-5-1. ", "p", "i-5-1"],
95         [440, " ", " ", "a", "a-6-1. ", "p", "i-6-1 ; ", "v", "w-6-1"],
96         [440, " ", " ", "a", "a-7-1"],
97         [440, " ", " ", "a", "a-8-1 ;", "v", "v-8-1"],
98 ];
99
100 is_deeply( test_marc_template($rec), $marc_out , 'is_deeply');
101
102 __END__
103
104 my $max_occ = $#{ $rec->{225} };
105
106 foreach my $from ( 0 .. $max_occ - 1 ) {
107         foreach my $to ( 1 .. $max_occ ) {
108                 my $new_rec = {
109                         225 => [ splice( @{ $rec->{225} }, $from, $to ) ],
110                 };
111                 diag "new_rec = ",dump( $new_rec ) if $debug;
112         
113                 my $expect_marc = [ splice( @{ $marc_out }, $from, $to ) ];
114                 diag "expect_marc = ",dump( $expect_marc ) if $debug;
115
116                 is_deeply( [ test_marc_template($rec) ], $expect_marc, 'is_deeply');
117         }
118 }