r1362@llin: dpavlin | 2007-10-30 02:46:05 +0100
[webpac2] / t / 3-normalize.t
index db0dd54..2fb889e 100755 (executable)
@@ -2,7 +2,7 @@
 
 use strict;
 
-use Test::More tests => 309;
+use Test::More tests => 341;
 use Test::Exception;
 use Cwd qw/abs_path/;
 use blib;
@@ -191,8 +191,23 @@ sub test_s {
 
        # simple list manipulatons
        cmp_ok( join('', prefix('ab', 'cd') ), 'eq', 'abcd', 'prefix');
+       cmp_ok( join('-', prefix('', 'x', 'y') ), 'eq', 'x-y', 'prefix empty');
+       cmp_ok( join('-', prefix(0, 'x', 'y') ), 'eq', '0x-0y', 'prefix 0');
+
        cmp_ok( join('', suffix('xy', 'cd') ), 'eq', 'cdxy', 'suffix');
+       cmp_ok( join('-', suffix('', 'x', 'y' ) ), 'eq', 'x-y', 'suffix empty');
+       cmp_ok( join('-', suffix(0, 'x', 'y' ) ), 'eq', 'x0-y0', 'suffix 0');
+
        cmp_ok( join('', surround('->', '<-', 'a','b','c') ), 'eq', '->a<-->b<-->c<-', 'surround');
+       cmp_ok( join('-', surround('', '', 'x','y','z') ), 'eq', 'x-y-z', 'surround empty');
+       cmp_ok( join('-', surround(0, 0, 'x','y','z') ), 'eq', '0x0-0y0-0z0', 'surround 0 0');
+
+       # count
+       my @el;
+       for my $i ( 0 .. 10 ) {
+               cmp_ok( count( @el ), '==', $i, "count($i)");
+               push @el, "element $i";
+       }
 
        # lookups
 
@@ -200,7 +215,7 @@ sub test_s {
 
        ok(_set_load_row(sub {
                my ($database,$input,$mfn) = @_;
-               diag "load_row( $database, $input, $mfn )";
+               diag "load_row( $database, $input, $mfn )" if ($debug);
                cmp_ok( $#_, '==', 2, 'have 3 arguments');
                ok($database, '_load_row database');
                ok($input, '_load_row input');
@@ -229,13 +244,13 @@ sub test_s {
                );
 
                ok(my $l = WebPAC::Normalize::_get_lookup(), '_get_lookup');
-               diag "_get_lookup = ", dump($l);
+               diag "_get_lookup = ", dump($l) if ($debug);
 
                my @lookup;
 
                ok(@lookup = lookup(
                                sub {
-                                       diag "in show";
+                                       diag "in show" if ($debug);
                                        rec('900','x');
                                },
                                'db','input','key',
@@ -254,7 +269,7 @@ sub test_s {
        }
 
        ok(my $l = WebPAC::Normalize::_get_lookup(), '_get_lookup');
-       diag "_get_lookup = ", dump($l);
+       diag "_get_lookup = ", dump($l) if ($debug);
 
        is_deeply( $l, {
                db => {
@@ -274,7 +289,7 @@ sub test_s {
 
 #######
 
-       diag "lookup_hash1 = ", dump($lookup_hash1);
+       diag "lookup_hash1 = ", dump($lookup_hash1) if ($debug);
        ok(_set_lookup( $lookup_hash1 ), '_set_lookup $lookup_hash1');
 
        throws_ok { _set_load_row() } qr/CODE/, 'empty _set_load_row()';
@@ -725,19 +740,28 @@ sub test_s {
                        [ '901', ' ', ' ', 'b', 'bar', 'c', 'baz' ],
                ],
        );
+
+       test_s(qq{ marc_remove('*'); });
+       ok(! WebPAC::Normalize::_get_marc_fields(), 'marc_remove(*)');
+
        test_rec_rules(
                'marc_duplicate',
                { '200' => [{ a => 42, b => 'bar', c => 'baz', d => 'bing', e => 'bong' }] },
                qq{
+                       marc_leader('06',42);
+                       marc_leader('11',0);
                        marc('900', 'a', rec('200','a') );
                        marc('900', 'b', rec('200','b') );
                        marc_duplicate;
+                       marc_leader('11',1);
                        marc_remove('900','b');
                        marc('900', 'b', rec('200','c') );
                        marc_duplicate;
+                       marc_leader('11',2);
                        marc_remove('900','b');
                        marc('900', 'b', rec('200','d') );
                        marc_duplicate;
+                       marc_leader('11',3);
                        marc_remove('900','b');
                        marc('900', 'b', rec('200','e') );
                },
@@ -747,6 +771,8 @@ sub test_s {
                ],
        );
 
+       cmp_ok( marc_count(), '==', 3, 'marc_count' );
+
        my $i = 0;
        foreach my $v ( qw/bar baz bing bong/ ) {
 
@@ -758,6 +784,7 @@ sub test_s {
                        [ [ '900', ' ', ' ', 'a', 42, 'b', $v ] ],
                        "MARC copy $i has $v",
                );
+               is_deeply(WebPAC::Normalize::_get_marc_leader(), { '06' => 42, 11 => $i }, "_get_marc_leader copy $i");
                $i++;
        }
 
@@ -816,5 +843,22 @@ sub test_s {
                '^aa1^bb1^aa2^bb2^cc1^cc2',
                '_pack_subfields_hash( $h, 1 )'
        );
+
+       _clean_ds();
+       test_s(qq{
+               marc_fixed('008', 0, 'abcdef');
+               marc_fixed('000', 5, '5');
+               marc_fixed('000', 10, 'A');
+               marc_fixed('000', 0, '0');
+       });
+       ok( my $m = WebPAC::Normalize::_get_marc_fields(), '_get_marc_fields');
+       diag dump( $m );
+       is_deeply( WebPAC::Normalize::_get_marc_fields(),
+               [
+                       ["008", "abcdef"], 
+                       #        0....5....10
+                       ["000", "0    5    A"]
+               ]
+       );
 }