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

Reply via email to