--- /dev/null
+use Test::More tests => 5;
+use Business::CreditCard;
+
+#w
+
+ok ( test_card_id_us() );
+ok ( test_card_id_ca() );
+ok ( test_card_id_mx() );
+ok ( test_card_id_cn() );
+ok ( test_card_id_base() );
+
+sub test_card_id_us {
+ local($Business::CreditCard::Country) = 'US';
+
+ my %cards = (
+ '3528000000000007' => 'Discover card',
+ '3589000000000003' => 'Discover card',
+ '30000000000004' => 'Discover card',
+ '30500000000003' => 'Discover card',
+ '30950000000000' => 'Discover card',
+ #'6200000000000005' => 'Discover card', #is 620 a valid CUP now?
+ '6220000000000008' => 'Discover card',
+ );
+
+ test_cards(\%cards);
+}
+
+sub test_cards {
+ my $cards = shift;
+ while( my ($k, $v)=each(%$cards) ){
+ if(cardtype($k) ne $v){
+ warn "Card $k - should be $v for $Business::CreditCard::Country ".
+ " but cardtype returns ". cardtype($k). "\n";
+ return;
+ }
+ }
+ return 1;
+}
+
+sub test_card_id_ca {
+ local($Business::CreditCard::Country) = 'CA';
+
+ my %cards = (
+ '3528000000000007' => 'Discover card',
+ '3589000000000003' => 'Discover card',
+ '30000000000004' => 'Discover card',
+ '30500000000003' => 'Discover card',
+ '30950000000000' => 'Discover card',
+ #'6200000000000005' => 'Discover card', #is 620 a valid CUP now?
+ '6220000000000008' => 'Discover card',
+ );
+ test_cards(\%cards);
+}
+
+#"all other countries"
+sub test_card_id_mx {
+ local($Business::CreditCard::Country) = 'MX';
+
+ my %cards = (
+ '3528000000000007' => 'JCB',
+ '3589000000000003' => 'JCB',
+ '30000000000004' => 'Discover card',
+ '30500000000003' => 'Discover card',
+ '30950000000000' => 'Discover card',
+ #'6200000000000005' => 'Discover card', #is 620 a valid CUP now?
+ '6220000000000008' => 'Discover card',
+ );
+ test_cards(\%cards);
+}
+
+sub test_card_id_cn {
+ local($Business::CreditCard::Country) = 'CN';
+
+ my %cards = (
+ '3528000000000007' => 'JCB',
+ '3589000000000003' => 'JCB',
+ '30000000000004' => 'Discover card',
+ '30500000000003' => 'Discover card',
+ '30950000000000' => 'Discover card',
+ #'6200000000000005' => 'Discover card', #is 620 a valid CUP now?
+ '6220000000000008' => 'China Union Pay',
+ );
+ test_cards(\%cards);
+}
+
+sub test_card_id_base {
+ local($Business::CreditCard::Country) = '';
+
+ my %cards = (
+ '3528000000000007' => 'JCB',
+ '3589000000000003' => 'JCB',
+ '30000000000004' => 'Discover card',
+ '30500000000003' => 'Discover card',
+ '30950000000000' => 'Discover card',
+ #'6200000000000005' => 'Discover card', #is 620 a valid CUP now?
+
+ #XXX this is technically an issue ("base" for CUP is still CUP)
+ ##'6220000000000008' => 'China Union Pay', #but module will say "Discover card"
+
+ );
+ test_cards(\%cards);
+}