6 use Test::More 'no_plan';
9 use OpenILS::Utils::MFHD;
17 foreach my $subfield (split(/\|/, $holding->subfield('x'))) {
18 next unless $subfield;
20 my ($key, $val) = unpack('aa*', $subfield);
21 $answer->{$key} = $val;
33 # skim to beginning of record (a non-blank, non comment line)
34 while ($line = <$fh>) {
36 last if (!($line =~ /^\s*$/) && !($line =~ /^#/));
39 return undef if !$line;
42 $marc = MARC::Record->new();
43 carp('No record created!') unless $marc;
45 $marc->leader('01119nas 2200313 a 4500');
47 MARC::Field->new('008', '970701c18439999enkwr p 0 a0eng '));
49 MARC::Field->new('035', '', '', a => sprintf('%04d', $testno)));
52 next if $line =~ /^#/; # allow embedded comments
54 return $marc if $line =~ /^\s*$/;
56 my ($fieldno, $indicators, $rest) = split(/ /, $line, 3);
57 my @inds = unpack('aa', $indicators);
62 foreach my $subfield (split(/\$/, $rest)) {
63 next unless $subfield;
65 my ($key, $val) = unpack('aa*', $subfield);
66 push @subfields, $key, $val;
69 $field = MARC::Field->new(
70 $fieldno, $inds[0], $inds[1],
75 $marc->append_fields($field);
86 open(my $testdata, "<mfhddata.txt") or die("Cannot open 'mfhddata.txt': $!");
88 while ($rec = load_MARC_rec($testdata)) {
89 $rec = MFHD->new($rec);
91 foreach my $cap (sort { $a->tag <=> $b->tag } $rec->field('85.')) {
95 ($htag = $cap->tag) =~ s/^85/86/;
96 @holdings = $rec->holdings($htag, $cap->subfield('8'));
98 if (!ok(scalar @holdings, "holdings defined " . $cap->subfield('8'))) {
102 foreach my $field (@holdings) {
104 local $TODO = "unimplemented"
105 if ($field->subfield('z') =~ /^TODO/);
106 is_deeply($field->next, right_answer($field),
107 $field->subfield('8') . ': ' . $field->subfield('z'));