Applying test/fix from LANG-457 - getting a StringIndexOutOfBounds from createNumber rather than a NumberFormatException

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/lang/trunk@711605 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Henri Yandell 2008-11-05 16:33:25 +00:00
parent 9d8846081a
commit 0d0061f247
2 changed files with 15 additions and 0 deletions

View File

@ -142,6 +142,9 @@ public final class NumberUtils {
if (val.length() == 0) { if (val.length() == 0) {
throw new NumberFormatException("\"\" is not a valid number."); throw new NumberFormatException("\"\" is not a valid number.");
} }
if (val.length() == 1 && !Character.isDigit(val.charAt(0))) {
throw new NumberFormatException(val + " is not a valid number.");
}
if (val.startsWith("--")) { if (val.startsWith("--")) {
// this is protection for poorness in java.lang.BigDecimal. // this is protection for poorness in java.lang.BigDecimal.
// it accepts this as a legal value, but it does not appear // it accepts this as a legal value, but it does not appear

View File

@ -521,4 +521,16 @@ public class NumberUtilsTest extends TestCase {
} }
} }
public void testLang457() {
String[] badInputs = new String[] { "l", "L", "f", "F", "junk", "bobL"};
for(int i=0; i<badInputs.length; i++) {
try {
NumberUtils.createNumber(badInputs[i]);
fail("NumberFormatException was expected for " + badInputs[i]);
} catch (NumberFormatException e) {
return; // expected
}
}
}
} }