This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-lang.git
commit 6508b0806b24ea979ce48526a9851059943da7f2 Author: Gary Gregory <[email protected]> AuthorDate: Wed Apr 24 08:58:32 2024 -0400 [LANG-1729] NumberUtils.isParsable() returns true for Fullwidth Unicode digits Add a disabled test that passes on Java 23-ea --- .../apache/commons/lang3/math/NumberUtilsTest.java | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) 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 5b7ab853f..975627053 100644 --- a/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java @@ -28,8 +28,11 @@ import java.lang.reflect.Modifier; import java.math.BigDecimal; import java.math.BigInteger; import java.math.RoundingMode; +import java.text.NumberFormat; +import java.text.ParseException; import org.apache.commons.lang3.AbstractLangTest; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; /** @@ -95,6 +98,22 @@ public class NumberUtilsTest extends AbstractLangTest { assertTrue(NumberUtils.compare((short) 213, (short) 32) > 0); } + private boolean isIntParsable(final String s) { + final NumberFormat instance = NumberFormat.getInstance(); + instance.setParseIntegerOnly(false); + try { + instance.parse(s); + } catch (final ParseException e) { + return false; + } + try { + Integer.parseInt(s); + } catch (final NumberFormatException e) { + return false; + } + return NumberUtils.isParsable(s); + } + /** * Test for {@link NumberUtils#toDouble(BigDecimal)} */ @@ -938,6 +957,15 @@ public class NumberUtilsTest extends AbstractLangTest { assertTrue(NumberUtils.isParsable("-.236")); } + @Test + @Disabled("Passes on OpenJDK 64-Bit Server VM (build 23-ea+18-1469, mixed mode, sharing)") + public void testIsParsableLang1729() { + assertTrue(isIntParsable("1")); + assertFalse(isIntParsable("1 2 3")); + assertTrue(isIntParsable("123")); + assertFalse(isIntParsable("1 2 3")); + } + @Test public void testLang1087() { // no sign cases
