Make Evergreen Perl modules installable via Module::Build to match OpenSRF
[working/Evergreen.git] / Open-ILS / src / perlmods / lib / OpenILS / Utils / MFHD / test / mfhd.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5 use Data::Dumper;
6 use Test::More 'no_plan';
7
8 use MARC::Record;
9 use OpenILS::Utils::MFHD;
10
11 use testlib;
12
13 my $testno = 1;
14
15 sub right_answer {
16     my $holding = shift;
17     my $answer  = {};
18
19     foreach my $subfield (split(/\|/, $holding->subfield('x'))) {
20         next unless $subfield;
21
22         my ($key, $val) = unpack('aa*', $subfield);
23         $answer->{$key} = $val;
24     }
25
26     return $answer;
27 }
28
29
30 my $rec;
31 my @captions;
32
33 open(my $testdata, "<mfhddata.txt") or die("Cannot open 'mfhddata.txt': $!");
34
35 while ($rec = testlib::load_MARC_rec($testdata, $testno++)) {
36     $rec = MFHD->new($rec);
37
38     foreach my $cap (sort { $a->tag <=> $b->tag } $rec->field('85.')) {
39         my $htag;
40         my @holdings;
41
42         ($htag = $cap->tag) =~ s/^85/86/;
43         @holdings = $rec->holdings($htag, $cap->subfield('8'));
44
45         if (!ok(scalar @holdings, "holdings defined " . $cap->subfield('8'))) {
46             next;
47         }
48
49         foreach my $field (@holdings) {
50           TODO: {
51                 local $TODO = "unimplemented"
52                   if ($field->subfield('z') =~ /^TODO/);
53                 is_deeply($field->next, right_answer($field),
54                     $field->subfield('8') . ': ' . $field->subfield('z'));
55             }
56         }
57     }
58 }
59
60 1;