bug 8215: (followup) make sure C4::CourseReserves doesn't export anything
[koha.git] / t / Circulation_barcodedecode.t
1 #!/usr/bin/perl
2 #
3
4 use strict;
5 use warnings;
6
7 use Test::More tests => 26;
8 C4::Context->_new_userenv(123456);
9 C4::Context->set_userenv(1,'kmkale' , 1, 'kk1' , 'IMS', 0, 'kmkale@anantcorp.com');
10
11 BEGIN {
12     use_ok('C4::Circulation');
13 }
14
15 our %inputs = (
16     cuecat     => ["26002315", '.C3nZC3nZC3nYD3b6ENnZCNnY.fHmc.C3D1Dxr2C3nZE3n7.', ".C3nZC3nZC3nYD3b6ENnZCNnY.fHmc.C3D1Dxr2C3nZE3n7.\r\n",
17                     'q.C3nZC3nZC3nWDNzYDxf2CNnY.fHmc.C3DWC3nZCNjXD3nW.', '.C3nZC3nZC3nWCxjWE3D1C3nX.cGf2.ENr7C3v7D3T3ENj3C3zYDNnZ.' ],
18     whitespace => [" 26002315", "26002315 ", "\n\t26002315\n"],
19     'T-prefix' => [qw(T0031472 T32)],
20     'libsuite8' => ['b000126', 'b12', 'B0126', 'IMS-B-126', 'ims-b-126','CD0000024','00123','11998'],
21     EAN13      => [qw(892685001928 695152)],
22     other      => [qw(26002315 T0031472 T32 Alphanum123), "Alpha Num 345"],
23 );
24 our %outputs = (
25     cuecat     => ["26002315", "046675000808", "046675000808", "043000112403", "978068484914051500"],
26     whitespace => [qw(26002315 26002315 26002315)],
27     'T-prefix' => [qw(T0031472 T0000002         )],
28     'libsuite8' => ['IMS-b-126', 'IMS-b-12', 'IMS-B-126', 'IMS-B-126', 'ims-b-126','IMS-CD-24','IMS-b-123','IMS-b-11998'],
29     EAN13      => [qw(0892685001928 0000000695152)],
30     other      => [qw(26002315 T0031472 T32 Alphanum123), "Alpha Num 345"],
31 );
32     
33 my @filters = sort keys %inputs;
34 foreach my $filter (@filters) {
35     foreach my $datum (@{$inputs{$filter}}) {
36         my $expect = shift @{$outputs{$filter}} or die "Internal Test Error: missing expected output for filter '$filter' on input '$datum'";
37         my $output = C4::Circulation::barcodedecode($datum, $filter);
38         ok($output eq $expect, sprintf("%12s: %20s => %15s", $filter, "'$datum'", "'$expect'")); 
39         ($output eq $expect) or diag  "Bad output: '$output'";
40     }
41 }
42
43 __END__
44
45 =head2 C4::Circulation::barcodedecode()
46
47 This tests avoids being dependent on the database by using the optional
48 second argument to barcodedecode.
49
50 T-prefix style is derived from zero-padded "Follett Classic Code 3 of 9".  From:
51     www.fsc.follett.com/_file/File/pdf/Barcode%20Symbology%20Q%20%20A%203_05.pdf
52  
53  ~ 1 to 7 characters
54  ~ T, P or X followed by numeric characters
55  ~ No checkdigit
56
57 =cut