From aacc467954f8d3df5c2e450b5cb01810bcc6667a Mon Sep 17 00:00:00 2001 From: Gary Gregory Date: Wed, 24 Apr 2024 16:01:39 -0400 Subject: [LANG-1729] NumberUtils.isParsable() returns true for Fullwidth Unicode digits Add Short test case --- .../apache/commons/lang3/math/NumberUtilsTest.java | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/test/java/org/apache/commons') diff --git a/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java b/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java index c42db3d7f..be40a0fdf 100644 --- a/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java @@ -129,6 +129,22 @@ public class NumberUtilsTest extends AbstractLangTest { return NumberUtils.isParsable(s); } + private boolean isShortParsable(final String s) { + final NumberFormat instance = NumberFormat.getInstance(); + instance.setParseIntegerOnly(false); + try { + instance.parse(s); + } catch (final ParseException e) { + return false; + } + try { + Short.parseShort(s); + } catch (final NumberFormatException e) { + return false; + } + return NumberUtils.isParsable(s); + } + /** * Test for {@link NumberUtils#toDouble(BigDecimal)} */ @@ -1007,6 +1023,14 @@ public class NumberUtilsTest extends AbstractLangTest { assertFalse(isLongParsable("1 2 3")); } + @Test + public void testLang1729IsParsableShort() { + assertTrue(isShortParsable("1")); + assertFalse(isShortParsable("1 2 3")); + assertTrue(isShortParsable("123")); + assertFalse(isShortParsable("1 2 3")); + } + @Test public void testLang300() { NumberUtils.createNumber("-1l"); -- cgit v1.2.3