--- trunk/t/3-normalize.t 2006/07/23 20:19:56 603 +++ trunk/t/3-normalize.t 2006/09/11 14:29:01 669 @@ -2,7 +2,7 @@ use strict; -use Test::More tests => 150; +use Test::More tests => 157; use Test::Exception; use Cwd qw/abs_path/; use blib; @@ -644,5 +644,61 @@ ); $i++; } + + test_rec_rules( + 'marc_original_order', + { + '200' => [ { + a => [ 'a1', 'a2' ], b => [ 'b1', 'b2' ], c => [ 'c1', 'c2' ], + subfields => [ qw/a 0 b 0 a 1 b 1 c 0 c 1/ ], + }, { + a => [ 'a3', 'a4', 'a5' ], b => 'b3', c => 'c3', + subfields => [ qw/a 0 a 1 b 0 c 0 a 2/ ], + } ], + }, + qq{ + marc_original_order(900,200); + }, + [ + [ '900', ' ', ' ', 'a', 'a1', 'b', 'b1', 'a', 'a2', 'b', 'b2', 'c', 'c1', 'c', 'c2', ], + [ '900', ' ', ' ', 'a', 'a3', 'a', 'a4', 'b', 'b3', 'c', 'c3', 'a', 'a5', ], + ], + ); + + test_rule( + 'rec1 skips subfields', + { + '200' => [ { + a => [ 'a1', 'a2' ], b => [ 'b1', 'b2' ], c => [ 'c1', 'c2' ], + subfields => [ qw/a 0 b 0 a 1 b 1 c 0 c 1/ ], + }, { + a => [ 'a3', 'a4', 'a5' ], b => 'b3', c => 'c3', + subfields => [ qw/a 0 a 1 b 0 c 0 a 2/ ], + } ], + }, + qq{ + rec1(200); + }, + ['a1', 'b1', 'a2', 'b2', 'c1', 'c2', 'a3', 'a4', 'b3', 'c3', 'a5' ], + ); + + is_deeply( + [ _pack_subfields_hash({ + a => [ 'a1', 'a2' ], b => [ 'b1', 'b2' ], c => [ 'c1', 'c2' ], + subfields => [ qw/a 0 b 0 a 1 b 1 c 0 c 1/ ], + }) ], + ['a1', 'b1', 'a2', 'b2', 'c1', 'c2'], + '_pack_subfields_hash( $h )' + ); + + cmp_ok( + _pack_subfields_hash({ + a => [ 'a1', 'a2' ], b => [ 'b1', 'b2' ], c => [ 'c1', 'c2' ], + subfields => [ qw/a 0 b 0 a 1 b 1 c 0 c 1/ ], + }, 1), + 'eq', + '^aa1^bb1^aa2^bb2^cc1^cc2', + '_pack_subfields_hash( $h, 1 )' + ); }