have test.t use Test::More (Alexander Ciornii)
[Business-CreditCard.git] / t / test.t
1
2 use Test::More tests => 1;
3 use Business::CreditCard;
4
5 ok( test_card_identification() );
6
7 sub test_card_identification {
8         # 
9         # For the curious the table of test number aren't real credit card
10         # in fact they won't validate but they do obey the rule for the
11         # cardtype table to identify the card type.
12         #
13         my %test_table=(
14                 '5212345678901234' =>   'MasterCard',
15                 '5512345678901234' =>   'MasterCard',
16                 '4123456789012' =>      'VISA card',
17                 '4512345678901234' =>   'VISA card',
18                 '341234567890123' =>    'American Express card',
19                 '371234567890123' =>    'American Express card',
20                 #'30112345678901' =>     "Diner's Club/Carte Blanche",
21                 '30112345678901' =>     'Discover card',
22                 #'30512345678901' =>     "Diner's Club/Carte Blanche",
23                 '30512345678901' =>     'Discover card',
24                 #'36123456789012' =>     "Diner's Club/Carte Blanche",
25                 #'36123456789012' =>     'MasterCard',
26                 '36123456789012' =>     'Discover card',
27                 #'38123456789012' =>     "Diner's Club/Carte Blanche",
28                 '38123456789012' =>     'Discover card',
29                 '201412345678901' =>    'enRoute',
30                 '214912345678901' =>    'enRoute',
31                 '6011123456789012' =>   'Discover card',
32                 '3123456789012345' =>   'JCB',
33                 '213112345678901' =>    'JCB',
34                 '180012345678901' =>    'JCB',
35                 '1800123456789012' =>   'Unknown',
36                 '312345678901234' =>    'Unknown',
37                 '4111xxxxxxxxxxxx' =>   'VISA card',
38                 '6599xxxxxxxxxxxx' =>   'Discover card',
39                 '6222xxxxxxxxxxxx' =>   'Discover card', #China Union Pay
40                 '6304980000000000004' => 'Laser',
41                 '6499xxxxxxxxxxxx' =>   'Discover card',
42                 '5610xxxxxxxxxxxx' =>   'BankCard',
43                 '6250xxxxxxxxxxxx' =>   'Discover card', #China Union Pay
44                 '6280xxxxxxxxxxxx' =>   'Discover card', #China Union Pay
45         );
46         while( my ($k, $v)=each(%test_table) ){
47                 if(cardtype($k) ne $v){
48                         warn "Card $k - should be $v but cardtype returns ". cardtype($k). "\n";
49                         return;
50                 }
51         }
52         return 1;
53 }
54