2 use Test::More tests => 1;
3 use Business::CreditCard;
5 ok( test_card_identification() );
7 sub test_card_identification {
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.
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
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";