is ($rec->{tags}[0]{uni}{b}, undef, 'only one uni subfield defined');
is ($rec->{tags}[0]{multi}, undef, 'no multi subfields were defined');
is ($rec->{tags}[1], undef, 'Only one tag in map');
-is ($rec->{bib}, undef, 'No bib-level fields in map');
# let's go ahead and look at the rest of the file
$rec = $mp->parse_record;
is ($rec->{egid}, 9000001, '903 #2');
# with map-01, 999$a and 999$q are captured. q only exists on the second
# record; the others should the placeholder value of ''
$mp = Equinox::Migration::MapDrivenMARCXMLProc->new( marcfile => 't/corpus/mdmp-0.txt',
- mapfile => 't/corpus/mdmpmap-01.txt',
- sample => [ 999 ]
+ mapfile => 't/corpus/mdmpmap-01.txt'
);
$rec = $mp->parse_record;
is ($rec->{tags}[0]{uni}{a}, "MYS DEM", '999$a');
$rec = $mp->parse_record;
is ($rec->{tags}[0]{uni}{a}, "MYS 2", '999$a');
is ($rec->{tags}[0]{uni}{q}, "TEST", '999$q does exist here');
-# process other two records and check the unmapped data stuffs
-$rec = $mp->parse_record;
-$rec = $mp->parse_record;
-my $unmapped = $mp->{data}{umap};
-is (defined $unmapped->{999}, 1);
-is (defined $unmapped->{999}{x}, 1);
-is ($unmapped->{999}{x}{value}, 'MYSTERY', 'Should be the first seen value');
-is ($unmapped->{999}{x}{count}, 7, 'One real in each record, plus 3 synthetic in last rec');
-is ($unmapped->{999}{x}{rcnt}, 4, 'Occurs in all records');
-is ($unmapped->{999}{s}{rcnt}, 3, 'Was removed from one record');
# map-02 adds 999$x *not* as multi, producing a fatal error on the last record
$mp = Equinox::Migration::MapDrivenMARCXMLProc->new( marcfile => 't/corpus/mdmp-0.txt',
eval { $rec = $mp->parse_record };
is ($@, "", '999$s exists here tho');
+# map-04 has fields in 999 and 250, and multi data
+$mp = Equinox::Migration::MapDrivenMARCXMLProc->new( marcfile => 't/corpus/mdmp-0.txt',
+ mapfile => 't/corpus/mdmpmap-04.txt');
+$rec = $mp->parse_record;
+is ($rec->{tags}[0]{tag}, 250, 'should be 250');
+is ($rec->{tags}[0]{uni}{a}, "1st ed.", '999$a');
+is ($rec->{tags}[1]{tag}, 999, 'should be 999');
+is ($rec->{tags}[1]{uni}{a}, "MYS DEM", '999$a');
+is_deeply ($rec->{tags}[1]{multi}{'999x'}, ['MYSTERY'], '999$x - multi');
+is_deeply ($rec->{tmap}{250}, [0], 'tag map test 1a');
+is_deeply ($rec->{tmap}{999}, [1], 'tag map test 1b');
+$rec = $mp->parse_record;
+$rec = $mp->parse_record;
+$rec = $mp->parse_record;
+is ($rec->{tags}[0]{tag}, 999, '250 doesnt exist in this record');
+is ($rec->{tags}[0]{uni}{a}, "FIC DEV", 'subfield value 4');
+is_deeply ($rec->{tags}[0]{multi}{'999x'}, ['FICTION','FICTION2','FICTION3','FICTION4'],
+ '999$x - multi');
+is ($rec->{tmap}{250}, undef, 'tag map test 2a');
+is_deeply ($rec->{tmap}{999}, [0], 'tag map test 2b');
+
+# map-05 is map-04 with a "no digits" filter on 999$x
+$mp = Equinox::Migration::MapDrivenMARCXMLProc->new( marcfile => 't/corpus/mdmp-0.txt',
+ mapfile => 't/corpus/mdmpmap-05.txt');
+is_deeply ($mp->{map}->filters('multi_field'), ['\d']);
+$rec = $mp->parse_record;
+$rec = $mp->parse_record;
+$rec = $mp->parse_record;
+$rec = $mp->parse_record;
+is_deeply ($rec->{tags}[0]{multi}{'999x'}, ['FICTION'], '999$x - multi no digits');