KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > validator > CreditCardValidatorTest


1 /*
2  * $Id: CreditCardValidatorTest.java 155434 2005-02-26 13:16:41Z dirkv $
3  * $Rev$
4  * $Date: 2005-02-26 05:16:41 -0800 (Sat, 26 Feb 2005) $
5  *
6  * ====================================================================
7  * Copyright 2001-2005 The Apache Software Foundation
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  * http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  */

21
22 package org.apache.commons.validator;
23
24 import junit.framework.TestCase;
25
26 /**
27  * Test the CreditCardValidator class.
28  */

29 public class CreditCardValidatorTest extends TestCase {
30     
31     private static final String JavaDoc VALID_VISA = "4417123456789113";
32     private static final String JavaDoc VALID_SHORT_VISA = "4222222222222";
33     private static final String JavaDoc VALID_AMEX = "378282246310005";
34     private static final String JavaDoc VALID_MASTERCARD = "5105105105105100";
35     private static final String JavaDoc VALID_DISCOVER = "6011000990139424";
36     private static final String JavaDoc VALID_DINERS = "30569309025904";
37
38     /**
39      * Constructor for CreditCardValidatorTest.
40      */

41     public CreditCardValidatorTest(String JavaDoc name) {
42         super(name);
43     }
44
45     public void testIsValid() {
46         CreditCardValidator ccv = new CreditCardValidator();
47         
48         assertFalse(ccv.isValid(null));
49         assertFalse(ccv.isValid(""));
50         assertFalse(ccv.isValid("123456789012")); // too short
51
assertFalse(ccv.isValid("12345678901234567890")); // too long
52
assertFalse(ccv.isValid("4417123456789112"));
53         assertFalse(ccv.isValid("4417q23456w89113"));
54         assertTrue(ccv.isValid(VALID_VISA));
55         assertTrue(ccv.isValid(VALID_SHORT_VISA));
56         assertTrue(ccv.isValid(VALID_AMEX));
57         assertTrue(ccv.isValid(VALID_MASTERCARD));
58         assertTrue(ccv.isValid(VALID_DISCOVER));
59         
60         // disallow Visa so it should fail even with good number
61
ccv = new CreditCardValidator(CreditCardValidator.AMEX);
62         assertFalse(ccv.isValid("4417123456789113"));
63     }
64     
65     public void testAddAllowedCardType() {
66         CreditCardValidator ccv = new CreditCardValidator(CreditCardValidator.NONE);
67         // Turned off all cards so even valid numbers should fail
68
assertFalse(ccv.isValid(VALID_VISA));
69         assertFalse(ccv.isValid(VALID_AMEX));
70         assertFalse(ccv.isValid(VALID_MASTERCARD));
71         assertFalse(ccv.isValid(VALID_DISCOVER));
72         
73         // test our custom type
74
ccv.addAllowedCardType(new DinersClub());
75         assertTrue(ccv.isValid(VALID_DINERS));
76     }
77     
78     /**
79      * Test a custom implementation of CreditCardType.
80      */

81     private class DinersClub implements CreditCardValidator.CreditCardType {
82         private static final String JavaDoc PREFIX = "300,301,302,303,304,305,";
83         public boolean matches(String JavaDoc card) {
84             String JavaDoc prefix = card.substring(0, 3) + ",";
85             return ((PREFIX.indexOf(prefix) != -1) && (card.length() == 14));
86         }
87     }
88
89 }
90
Popular Tags