/[webpac2]/trunk/t/3-normalize.t
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/t/3-normalize.t

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 736 by dpavlin, Thu Oct 5 12:57:51 2006 UTC revision 980 by dpavlin, Sat Nov 3 13:33:19 2007 UTC
# Line 1  Line 1 
1  #!/usr/bin/perl -w  #!/usr/bin/perl -w
2    
3  use strict;  use strict;
   
 use Test::More tests => 309;  
 use Test::Exception;  
 use Cwd qw/abs_path/;  
4  use blib;  use blib;
5  use File::Slurp;  
6  use Getopt::Long;  use Test::More tests => 351;
7    
8  BEGIN {  BEGIN {
9            use_ok( 'WebPAC::Test' );
10          use_ok( 'WebPAC::Normalize' );          use_ok( 'WebPAC::Normalize' );
11  }  }
12    
 use Data::Dump qw/dump/;  
   
 my $debug = 0;  
 GetOptions(  
         "debug+", \$debug  
 );  
   
13  cmp_ok(_debug(1), '==', 1, '_debug level');  cmp_ok(_debug(1), '==', 1, '_debug level');
14  cmp_ok(_debug(0), '==', 0, '_debug level');  cmp_ok(_debug(0), '==', 0, '_debug level');
15    
# Line 28  if ($debug > 2) { Line 18  if ($debug > 2) {
18          diag "debug level for WebPAC::Normalize is ", _debug( $debug - 2 );          diag "debug level for WebPAC::Normalize is ", _debug( $debug - 2 );
19  }  }
20    
 ok(my $abs_path = abs_path($0), "abs_path");  
 $abs_path =~ s#/[^/]*$#/#;  
 diag "abs_path: $abs_path" if ($debug);  
   
21  my $rec1 = {  my $rec1 = {
22          '200' => [{          '200' => [{
23                  'a' => '200a',                  'a' => '200a',
# Line 191  sub test_s { Line 177  sub test_s {
177    
178          # simple list manipulatons          # simple list manipulatons
179          cmp_ok( join('', prefix('ab', 'cd') ), 'eq', 'abcd', 'prefix');          cmp_ok( join('', prefix('ab', 'cd') ), 'eq', 'abcd', 'prefix');
180            cmp_ok( join('-', prefix('', 'x', 'y') ), 'eq', 'x-y', 'prefix empty');
181            cmp_ok( join('-', prefix(0, 'x', 'y') ), 'eq', '0x-0y', 'prefix 0');
182    
183          cmp_ok( join('', suffix('xy', 'cd') ), 'eq', 'cdxy', 'suffix');          cmp_ok( join('', suffix('xy', 'cd') ), 'eq', 'cdxy', 'suffix');
184            cmp_ok( join('-', suffix('', 'x', 'y' ) ), 'eq', 'x-y', 'suffix empty');
185            cmp_ok( join('-', suffix(0, 'x', 'y' ) ), 'eq', 'x0-y0', 'suffix 0');
186    
187          cmp_ok( join('', surround('->', '<-', 'a','b','c') ), 'eq', '->a<-->b<-->c<-', 'surround');          cmp_ok( join('', surround('->', '<-', 'a','b','c') ), 'eq', '->a<-->b<-->c<-', 'surround');
188            cmp_ok( join('-', surround('', '', 'x','y','z') ), 'eq', 'x-y-z', 'surround empty');
189            cmp_ok( join('-', surround(0, 0, 'x','y','z') ), 'eq', '0x0-0y0-0z0', 'surround 0 0');
190    
191            # count
192            my @el;
193            for my $i ( 0 .. 10 ) {
194                    cmp_ok( count( @el ), '==', $i, "count($i)");
195                    push @el, "element $i";
196            }
197    
198          # lookups          # lookups
199    
# Line 200  sub test_s { Line 201  sub test_s {
201    
202          ok(_set_load_row(sub {          ok(_set_load_row(sub {
203                  my ($database,$input,$mfn) = @_;                  my ($database,$input,$mfn) = @_;
204                  diag "load_row( $database, $input, $mfn )";                  diag "load_row( $database, $input, $mfn )" if ($debug);
205                  cmp_ok( $#_, '==', 2, 'have 3 arguments');                  cmp_ok( $#_, '==', 2, 'have 3 arguments');
206                  ok($database, '_load_row database');                  ok($database, '_load_row database');
207                  ok($input, '_load_row input');                  ok($input, '_load_row input');
# Line 229  sub test_s { Line 230  sub test_s {
230                  );                  );
231    
232                  ok(my $l = WebPAC::Normalize::_get_lookup(), '_get_lookup');                  ok(my $l = WebPAC::Normalize::_get_lookup(), '_get_lookup');
233                  diag "_get_lookup = ", dump($l);                  diag "_get_lookup = ", dump($l) if ($debug);
234    
235                  my @lookup;                  my @lookup;
236    
237                  ok(@lookup = lookup(                  ok(@lookup = lookup(
238                                  sub {                                  sub {
239                                          diag "in show";                                          diag "in show" if ($debug);
240                                          rec('900','x');                                          rec('900','x');
241                                  },                                  },
242                                  'db','input','key',                                  'db','input','key',
# Line 254  sub test_s { Line 255  sub test_s {
255          }          }
256    
257          ok(my $l = WebPAC::Normalize::_get_lookup(), '_get_lookup');          ok(my $l = WebPAC::Normalize::_get_lookup(), '_get_lookup');
258          diag "_get_lookup = ", dump($l);          diag "_get_lookup = ", dump($l) if ($debug);
259    
260          is_deeply( $l, {          is_deeply( $l, {
261                  db => {                  db => {
# Line 274  sub test_s { Line 275  sub test_s {
275    
276  #######  #######
277    
278          diag "lookup_hash1 = ", dump($lookup_hash1);          diag "lookup_hash1 = ", dump($lookup_hash1) if ($debug);
279          ok(_set_lookup( $lookup_hash1 ), '_set_lookup $lookup_hash1');          ok(_set_lookup( $lookup_hash1 ), '_set_lookup $lookup_hash1');
280    
281          throws_ok { _set_load_row() } qr/CODE/, 'empty _set_load_row()';          throws_ok { _set_load_row() } qr/CODE/, 'empty _set_load_row()';
# Line 360  sub test_s { Line 361  sub test_s {
361          _set_rec( $rec2 );          _set_rec( $rec2 );
362    
363          test_s(qq{          test_s(qq{
364                  tag('Title',                  search_display('Title',
365                          rec('200','a')                          rec('200','a')
366                  );                  );
367          });          });
368          test_s(qq{          test_s(qq{
369                  tag('Who',                  search_display('Who',
370                          join_with(" ",                          join_with(" ",
371                                  rec('702','a'),                                  rec('702','a'),
372                                  rec('702','b')                                  rec('702','b')
# Line 416  sub test_s { Line 417  sub test_s {
417          test_check_ds('display');          test_check_ds('display');
418    
419          _clean_ds();          _clean_ds();
420          test_s(qq{ tag('something', '42'); });          test_s(qq{ search_display('something', '42'); });
421          test_s(qq{ tag('empty', ''); });          test_s(qq{ search_display('empty', ''); });
422          test_check_ds('search');          test_check_ds('search');
423          test_check_ds('display');          test_check_ds('display');
424    
425          _clean_ds();          _clean_ds();
426            test_s(qq{ sorted('something', '42'); });
427            test_s(qq{ sorted('empty', ''); });
428            test_check_ds('sorted');
429    
430            _clean_ds();
431          my $n = read_file( "$abs_path/data/normalize.pl" );          my $n = read_file( "$abs_path/data/normalize.pl" );
432          $n .= "\n1;\n";          $n .= "\n1;\n";
433          #diag "normalize code:\n$n\n";          #diag "normalize code:\n$n\n";
# Line 445  sub test_s { Line 451  sub test_s {
451          is_deeply( $ds, {          is_deeply( $ds, {
452                  'mixed' => {                  'mixed' => {
453                          'search' => [ '200a', '200b' ],                          'search' => [ '200a', '200b' ],
                         'tag' => 'mixed'  
454                  }                  }
455          }, 'correct get_ds');          }, 'correct get_ds');
456    
# Line 469  sub test_s { Line 474  sub test_s {
474          is_deeply( $ds, {          is_deeply( $ds, {
475                  'mixed' => {                  'mixed' => {
476                          'search' => [ '200a', '200-solo' ],                          'search' => [ '200a', '200-solo' ],
                         'tag' => 'mixed'  
477                  }                  }
478          }, 'correct get_ds');          }, 'correct get_ds');
479    
# Line 725  sub test_s { Line 729  sub test_s {
729                          [ '901', ' ', ' ', 'b', 'bar', 'c', 'baz' ],                          [ '901', ' ', ' ', 'b', 'bar', 'c', 'baz' ],
730                  ],                  ],
731          );          );
732    
733            test_s(qq{ marc_remove('*'); });
734            ok(! WebPAC::Normalize::_get_marc_fields(), 'marc_remove(*)');
735    
736          test_rec_rules(          test_rec_rules(
737                  'marc_duplicate',                  'marc_duplicate',
738                  { '200' => [{ a => 42, b => 'bar', c => 'baz', d => 'bing', e => 'bong' }] },                  { '200' => [{ a => 42, b => 'bar', c => 'baz', d => 'bing', e => 'bong' }] },
739                  qq{                  qq{
740                            marc_leader('06',42);
741                            marc_leader('11',0);
742                          marc('900', 'a', rec('200','a') );                          marc('900', 'a', rec('200','a') );
743                          marc('900', 'b', rec('200','b') );                          marc('900', 'b', rec('200','b') );
744                          marc_duplicate;                          marc_duplicate;
745                            marc_leader('11',1);
746                          marc_remove('900','b');                          marc_remove('900','b');
747                          marc('900', 'b', rec('200','c') );                          marc('900', 'b', rec('200','c') );
748                          marc_duplicate;                          marc_duplicate;
749                            marc_leader('11',2);
750                          marc_remove('900','b');                          marc_remove('900','b');
751                          marc('900', 'b', rec('200','d') );                          marc('900', 'b', rec('200','d') );
752                          marc_duplicate;                          marc_duplicate;
753                            marc_leader('11',3);
754                          marc_remove('900','b');                          marc_remove('900','b');
755                          marc('900', 'b', rec('200','e') );                          marc('900', 'b', rec('200','e') );
756                  },                  },
# Line 747  sub test_s { Line 760  sub test_s {
760                  ],                  ],
761          );          );
762    
763            cmp_ok( marc_count(), '==', 3, 'marc_count' );
764    
765          my $i = 0;          my $i = 0;
766          foreach my $v ( qw/bar baz bing bong/ ) {          foreach my $v ( qw/bar baz bing bong/ ) {
767    
# Line 758  sub test_s { Line 773  sub test_s {
773                          [ [ '900', ' ', ' ', 'a', 42, 'b', $v ] ],                          [ [ '900', ' ', ' ', 'a', 42, 'b', $v ] ],
774                          "MARC copy $i has $v",                          "MARC copy $i has $v",
775                  );                  );
776                    is_deeply(WebPAC::Normalize::_get_marc_leader(), { '06' => 42, 11 => $i }, "_get_marc_leader copy $i");
777                  $i++;                  $i++;
778          }          }
779    
# Line 816  sub test_s { Line 832  sub test_s {
832                  '^aa1^bb1^aa2^bb2^cc1^cc2',                  '^aa1^bb1^aa2^bb2^cc1^cc2',
833                  '_pack_subfields_hash( $h, 1 )'                  '_pack_subfields_hash( $h, 1 )'
834          );          );
835    
836            _clean_ds();
837            test_s(qq{
838                    marc_fixed('008', 0, 'abcdef');
839                    marc_fixed('000', 5, '5');
840                    marc_fixed('000', 10, 'A');
841                    marc_fixed('000', 0, '0');
842            });
843            ok( my $m = WebPAC::Normalize::_get_marc_fields(), '_get_marc_fields');
844            diag dump( $m );
845            is_deeply( WebPAC::Normalize::_get_marc_fields(),
846                    [
847                            ["008", "abcdef"],
848                            #        0....5....10
849                            ["000", "0    5    A"]
850                    ]
851            );
852    
853            test_s(qq{ isbn_13( '1558607013', '978-1558607019' ) });
854            test_s(qq{ isbn_10( '1558607013', '978-1558607019' ) });
855    
856            is_deeply(
857                    [ isbn_13( '1558607013', '978-1558607019' ) ],
858                    [ '978-1-55860-701-9', '978-1-55860-701-9', ],
859            'isbn_13' );
860    
861            is_deeply(
862                    [ isbn_10( '1558607013', '978-1558607019' ) ],
863                    [ '1-55860-701-3', '1-55860-701-3' ],
864            'isbn_10' );
865    
866  }  }
867    

Legend:
Removed from v.736  
changed lines
  Added in v.980

  ViewVC Help
Powered by ViewVC 1.1.26