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));
+ }
+ }
+
}