diff --git a/src/main/java/org/apache/commons/validator/routines/checkdigit/CASNumberCheckDigit.java b/src/main/java/org/apache/commons/validator/routines/checkdigit/CASNumberCheckDigit.java index 4139ab890..db740f94c 100644 --- a/src/main/java/org/apache/commons/validator/routines/checkdigit/CASNumberCheckDigit.java +++ b/src/main/java/org/apache/commons/validator/routines/checkdigit/CASNumberCheckDigit.java @@ -110,9 +110,10 @@ public boolean isValid(final String code) { if (!(cde instanceof String)) { return false; } + final String validated = (String) cde; try { - final int modulusResult = INSTANCE.calculateModulus((String) cde, true); - return modulusResult == Character.getNumericValue(code.charAt(code.length() - 1)); + final int modulusResult = INSTANCE.calculateModulus(validated, true); + return modulusResult == Character.getNumericValue(validated.charAt(validated.length() - 1)); } catch (final CheckDigitException ex) { return false; } diff --git a/src/main/java/org/apache/commons/validator/routines/checkdigit/ECNumberCheckDigit.java b/src/main/java/org/apache/commons/validator/routines/checkdigit/ECNumberCheckDigit.java index 50f6d11a3..7b73d2fdc 100644 --- a/src/main/java/org/apache/commons/validator/routines/checkdigit/ECNumberCheckDigit.java +++ b/src/main/java/org/apache/commons/validator/routines/checkdigit/ECNumberCheckDigit.java @@ -98,9 +98,10 @@ public boolean isValid(final String code) { if (!(cde instanceof String)) { return false; } + final String validated = (String) cde; try { - final int modulusResult = INSTANCE.calculateModulus((String) cde, true); - return modulusResult == Character.getNumericValue(code.charAt(code.length() - 1)); + final int modulusResult = INSTANCE.calculateModulus(validated, true); + return modulusResult == Character.getNumericValue(validated.charAt(validated.length() - 1)); } catch (final CheckDigitException ex) { return false; } diff --git a/src/test/java/org/apache/commons/validator/routines/checkdigit/CASNumberCheckDigitTest.java b/src/test/java/org/apache/commons/validator/routines/checkdigit/CASNumberCheckDigitTest.java index f36e77685..940a154d5 100644 --- a/src/test/java/org/apache/commons/validator/routines/checkdigit/CASNumberCheckDigitTest.java +++ b/src/test/java/org/apache/commons/validator/routines/checkdigit/CASNumberCheckDigitTest.java @@ -16,7 +16,10 @@ */ package org.apache.commons.validator.routines.checkdigit; +import static org.junit.jupiter.api.Assertions.assertTrue; + import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; /** * CAS Number Check Digit Tests. @@ -55,4 +58,13 @@ protected void setUp() { valid = new String[] {MIN, WATER, ETHANOL, ASPIRIN, COFFEIN, FORMALDEHYDE, DEXAMETHASONE, ARSENIC, ASBESTOS, MAX}; } + /** + * The format validator trims the input, so surrounding whitespace must not change the result. + */ + @Test + void testIsValidSurroundingWhitespace() { + assertTrue(routine.isValid(" " + WATER), "leading whitespace"); + assertTrue(routine.isValid(WATER + " "), "trailing whitespace"); + } + } diff --git a/src/test/java/org/apache/commons/validator/routines/checkdigit/ECNumberCheckDigitTest.java b/src/test/java/org/apache/commons/validator/routines/checkdigit/ECNumberCheckDigitTest.java index 89a8a4ee7..7d3ba8654 100644 --- a/src/test/java/org/apache/commons/validator/routines/checkdigit/ECNumberCheckDigitTest.java +++ b/src/test/java/org/apache/commons/validator/routines/checkdigit/ECNumberCheckDigitTest.java @@ -16,7 +16,10 @@ */ package org.apache.commons.validator.routines.checkdigit; +import static org.junit.jupiter.api.Assertions.assertTrue; + import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; /** * EC Number Check Digit Tests. @@ -51,4 +54,13 @@ protected void setUp() { valid = new String[] {MIN, FORMALDEHYDE, DEXAMETHASONE, ARSENIC, ASBESTOS, MAX}; } + /** + * The format validator trims the input, so surrounding whitespace must not change the result. + */ + @Test + void testIsValidSurroundingWhitespace() { + assertTrue(routine.isValid(" " + DEXAMETHASONE), "leading whitespace"); + assertTrue(routine.isValid(DEXAMETHASONE + " "), "trailing whitespace"); + } + }