View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.validator.routines.checkdigit;
18  
19  
20  /**
21   * ISIN Check Digit Test.
22   *
23   * @version $Revision$
24   * @since Validator 1.4
25   */
26  public class ISINCheckDigitTest extends AbstractCheckDigitTest {
27  
28      /**
29       * Constructor
30       * @param name test name
31       */
32      public ISINCheckDigitTest(String name) {
33          super(name);
34      }
35  
36      /**
37       * Set up routine & valid codes.
38       */
39      @Override
40      protected void setUp() throws Exception {
41          super.setUp();
42          routine = ISINCheckDigit.ISIN_CHECK_DIGIT;
43          valid = new String[] {"US0378331005",
44                                "BMG8571G1096",
45                                "AU0000XVGZA3",
46                                "GB0002634946",
47                                "FR0004026250",
48                                  "3133EHHF3", // see VALIDATOR-422 Valid check-digit, but not valid ISIN
49                                "DK0009763344",
50                                "dk0009763344", // TODO lowercase is currently accepted, but is this valid?
51                                "AU0000xvgza3", // lowercase NSIN
52                                "EZ0000000003", // Invented; for use in ISINValidatorTest
53                                "XS0000000009", // ditto
54                                "AA0000000006", // ditto
55                                };
56          invalid = new String[] {"0378#3100"};
57      }
58  
59      private static String invalidCheckDigits[] =
60                               {"US037833100O", // proper check digit is '5', see above
61                                "BMG8571G109D", // proper check digit is '6', see above
62                                "AU0000XVGZAD", // proper check digit is '3', see above
63                                "GB000263494I", // proper check digit is '6', see above
64                                "FR000402625C", // proper check digit is '0', see above
65                                "DK000976334H", // proper check digit is '4', see above
66                                };
67  
68      public void testVALIDATOR_345() {
69          for (int i = 0; i < invalidCheckDigits.length; i++) {
70              String invalidCheckDigit = invalidCheckDigits[i];
71              assertFalse("Should fail: " + invalidCheckDigit, routine.isValid(invalidCheckDigit));
72          }
73      }
74  }