/[webpac2]/trunk/t/3-normalize-set.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

Contents of /trunk/t/3-normalize-set.t

Parent Directory Parent Directory | Revision Log Revision Log


Revision 468 - (show annotations)
Sat May 13 09:48:15 2006 UTC (18 years ago) by dpavlin
File MIME type: application/x-troff
File size: 3931 byte(s)
 r595@llin:  dpavlin | 2006-05-13 11:48:05 +0200
 use normalize file t/data/normalize.pl

1 #!/usr/bin/perl -w
2
3 use strict;
4
5 use Test::More tests => 25;
6 use Test::Exception;
7 use Cwd qw/abs_path/;
8 use blib;
9 use File::Slurp;
10
11 use Data::Dumper;
12 my $debug = 0;
13
14 BEGIN {
15 use_ok( 'WebPAC::Normalize::Set' );
16 }
17
18 ok(my $abs_path = abs_path($0), "abs_path");
19 $abs_path =~ s#/[^/]*$#/#;
20 diag "abs_path: $abs_path" if ($debug);
21
22 #throws_ok { new WebPAC::Normalize::XML( lookup_regex => 'foo' ) } qr/pair/, "lookup_regex without lookup";
23
24 my $rec1 = {
25 '200' => [{
26 'a' => '200a',
27 'b' => '200b',
28 },{
29 'c' => '200c',
30 'd' => '200d',
31 },{
32 'a' => '200a*2',
33 'd' => '200d*2',
34 }],
35 '201' => [{
36 'x' => '201x',
37 'y' => '201y',
38 }],
39 '900' => [
40 '900-no_subfield'
41 ],
42 '901' => [{
43 'a' => '900a',
44 }],
45 '902' => [{
46 'z' => '900',
47 }],
48 };
49
50 my $rec2 = {
51 '675' => [ {
52 'a' => '159.9'
53 } ],
54 '210' => [ {
55 'c' => 'New York University press',
56 'a' => 'New York',
57 'd' => 'cop. 1988'
58 } ],
59 '700' => [ {
60 'a' => 'Haynal',
61 'b' => 'André'
62 } ],
63 '801' => [ 'FFZG' ],
64 '991' => [ '8302' ],
65 '000' => [ 1 ],
66 '702' => [ {
67 'a' => 'Holder',
68 'b' => 'Elizabeth'
69 } ],
70 '215' => [ {
71 'c' => 'ilustr',
72 'a' => 'xix, 202 str',
73 'd' => '23cm'
74 } ],
75 '990' => [
76 '2140',
77 '88',
78 'HAY'
79 ],
80 '200' => [ {
81 'e' => 'from Freud and Ferenczi to Michael balint',
82 'a' => 'Controversies in psychoanalytic method',
83 'g' => 'translated by Elizabeth Holder on the basisi of a first draft by Archie Hooton ; with a preface by Daniel N. Stern',
84 'f' => 'by André E. Haynal'
85 } ],
86 '610' => [ 'povijest psihoanalize' ],
87 '994' => [ {
88 'c' => '',
89 'a' => 'PS',
90 'b' => 'MG'
91 } ],
92 '320' => [ 'Kazalo' ],
93 '101' => [ 'ENG' ],
94 '686' => [ '2140' ],
95 '300' => [ 'Prijevod djela: ' ],
96 };
97
98
99 my $lookup1 = {
100 '00900' => [
101 'lookup 1',
102 'lookup 2',
103 ],
104 };
105
106 my $lookup2 = {
107 '00900' => 'lookup',
108 };
109
110
111 sub test {
112 print Dumper( @_ ), ("-" x 78), "\n";
113 ok( defined(@_) );
114 }
115
116 sub test_s {
117 my $t = shift || die;
118 $t =~ s/[\n\r\s]+/ /gs;
119 ok(my $v = eval "$t", "eval: $t");
120 ok(! $@, $@ ? "error: $@" : "no error");
121 }
122
123 {
124 no strict 'subs';
125 use WebPAC::Normalize::Set;
126
127 set_rec( $rec1 );
128
129 cmp_ok( join(",", rec2('200','a') ), 'eq', '200a,200a*2' );
130 cmp_ok( join(",", rec2('200','a'), rec2('200','b') ), 'eq', '200a,200a*2,200b' );
131 cmp_ok( join(" * ", sort(rec1('200'), rec1('201') )), 'eq', '200a * 200a*2 * 200b * 200c * 200d * 200d*2 * 201x * 201y' );
132 is_deeply( \[ rec1('200') ], \[ qw/200a 200b 200c 200d 200a*2 200d*2/ ] );
133 is_deeply( \[ regex( 's/0/o/g', rec1('200') ) ], \[ qw/2ooa 2oob 2ooc 2ood 2ooa*2 2ood*2/ ]);
134 is_deeply( \[ grep { /\*/ } regex( 's/0/o/g', rec1('200') ) ], \[ qw/2ooa*2 2ood*2/ ]);
135 is_deeply( \[ rec('902') ], \[ '900' ] );
136 cmp_ok( rec('902'), 'eq', rec('902','z') );
137
138 set_lookup( $lookup1 );
139
140 cmp_ok(
141 join_with(" i ",
142 lookup(
143 regex( 's/^/00/',
144 rec2('902','z')
145 )
146 )
147 ),
148 'eq', 'lookup 1 i lookup 2');
149
150 set_lookup( $lookup2 );
151
152 is_deeply( \[ lookup( prefix( '00', rec('902') ) ) ], \[ 'lookup' ] );
153
154 ok(! lookup('non-existent') );
155
156 set_rec( $rec2 );
157
158 test_s(qq{
159 tag('Title',
160 rec('200','a')
161 );
162 });
163 test_s(qq{
164 tag('Who',
165 join_with(" ",
166 rec('702','a'),
167 rec('702','b')
168 )
169 );
170 });
171
172 test_s(qq{
173 display('Publisher',
174 rec('210','c')
175 )
176 });
177
178 test_s(qq{
179 search('Year',
180 regex( 's/[^\\d]+//',
181 rec('210','d')
182 )
183 )
184 });
185
186 ok(my $ds = get_ds(), "get_ds");
187 diag "ds = ", Dumper($ds) if ($debug);
188
189 clean_ds();
190
191 my $n = read_file( "$abs_path/data/normalize.pl" );
192 $n .= "\n1;\n";
193 #diag "normalize code:\n$n\n";
194 test_s( $n );
195
196 ok($ds = get_ds(), "get_ds");
197 diag "ds = ", Dumper($ds) if ($debug);
198 }
199

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.26