Author: britter
Date: Thu Jan  1 16:44:02 2015
New Revision: 1648878

URL: http://svn.apache.org/r1648878
Log:
VALIDATOR-346: SedolCheckDigit fails to reject invalid (non-numeric) check 
digits. Fix implemented by Sebb.

Modified:
    commons/proper/validator/trunk/src/changes/changes.xml
    
commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/checkdigit/SedolCheckDigit.java
    
commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/checkdigit/SedolCheckDigitTest.java

Modified: commons/proper/validator/trunk/src/changes/changes.xml
URL: 
http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/changes/changes.xml?rev=1648878&r1=1648877&r2=1648878&view=diff
==============================================================================
--- commons/proper/validator/trunk/src/changes/changes.xml (original)
+++ commons/proper/validator/trunk/src/changes/changes.xml Thu Jan  1 16:44:02 
2015
@@ -43,6 +43,9 @@ The <action> type attribute can be add,u
   <body>
 
   <release version="1.4.1" date="tba" description="1.4 Maintenance release">
+    <action issue="VALIDATOR-346" dev="sebb" type="fix" >
+      SedolCheckDigit fails to reject invalid (non-numeric) check digits
+    </action>
     <action issue="VALIDATOR-345" dev="sebb" type="fix" >
       ISINCheckDigit fails to reject invalid (non-numeric) check digits
     </action>

Modified: 
commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/checkdigit/SedolCheckDigit.java
URL: 
http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/checkdigit/SedolCheckDigit.java?rev=1648878&r1=1648877&r2=1648878&view=diff
==============================================================================
--- 
commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/checkdigit/SedolCheckDigit.java
 (original)
+++ 
commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/checkdigit/SedolCheckDigit.java
 Thu Jan  1 16:44:02 2015
@@ -97,9 +97,11 @@ public final class SedolCheckDigit exten
     protected int toInt(char character, int leftPos, int rightPos)
             throws CheckDigitException {
         int charValue = Character.getNumericValue(character);
-        if (charValue < 0 || charValue > 35) {
+        // the check digit is only allowed to reach 9
+        final int charMax = rightPos == 1 ? 9 : 35;
+        if (charValue < 0 || charValue > charMax) {
             throw new CheckDigitException("Invalid Character[" +
-                    leftPos + "] = '" + charValue + "'");
+                    leftPos + "," + rightPos + "] = '" + charValue + "' out of 
range 0 to " + charMax);
         }
         return charValue;
     }

Modified: 
commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/checkdigit/SedolCheckDigitTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/checkdigit/SedolCheckDigitTest.java?rev=1648878&r1=1648877&r2=1648878&view=diff
==============================================================================
--- 
commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/checkdigit/SedolCheckDigitTest.java
 (original)
+++ 
commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/checkdigit/SedolCheckDigitTest.java
 Thu Jan  1 16:44:02 2015
@@ -49,4 +49,20 @@ public class SedolCheckDigitTest extends
         invalid = new String[] {"123#567"};
         zeroSum = "0000000";
     }
+
+    private static String invalidCheckDigits[] = {
+                "026349E", // proper check digit is '4', see above
+                "087061C", // proper check digit is '2', see above
+                "B06LQ9H", // proper check digit is '7', see above
+                "343757F", // proper check digit is '5', see above
+                "B07LF5F", // proper check digit is '5', see above
+               };
+
+    public void testVALIDATOR_346() {
+        for (int i = 0; i < invalidCheckDigits.length; i++) {
+            String invalidCheckDigit = invalidCheckDigits[i];
+            assertFalse("Should fail: " + invalidCheckDigit, 
routine.isValid(invalidCheckDigit));
+        }
+    }
+
 }


Reply via email to