You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2024/04/24 20:03:22 UTC
(commons-lang) 04/04: [LANG-1729] NumberUtils.isParsable() returns true for Fullwidth Unicode digits
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 e4aba3f828f839d0373bcb1390c13b36d1f17fb4
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Apr 24 16:03:13 2024 -0400
[LANG-1729] NumberUtils.isParsable() returns true for Fullwidth Unicode
digits
Add Byte test case
---
.../apache/commons/lang3/math/NumberUtilsTest.java | 54 ++++++++++++++++------
1 file changed, 39 insertions(+), 15 deletions(-)
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 be40a0fdf..912109690 100644
--- a/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java
@@ -97,7 +97,23 @@ public class NumberUtilsTest extends AbstractLangTest {
assertTrue(NumberUtils.compare((short) 213, (short) 32) > 0);
}
- private boolean isIntegerParsable(final String s) {
+ private boolean isParsableByte(final String s) {
+ final NumberFormat instance = NumberFormat.getInstance();
+ instance.setParseIntegerOnly(false);
+ try {
+ instance.parse(s);
+ } catch (final ParseException e) {
+ return false;
+ }
+ try {
+ Byte.parseByte(s);
+ } catch (final NumberFormatException e) {
+ return false;
+ }
+ return NumberUtils.isParsable(s);
+ }
+
+ private boolean isParsableInteger(final String s) {
final NumberFormat instance = NumberFormat.getInstance();
instance.setParseIntegerOnly(false);
try {
@@ -113,7 +129,7 @@ public class NumberUtilsTest extends AbstractLangTest {
return NumberUtils.isParsable(s);
}
- private boolean isLongParsable(final String s) {
+ private boolean isParsableLong(final String s) {
final NumberFormat instance = NumberFormat.getInstance();
instance.setParseIntegerOnly(false);
try {
@@ -129,7 +145,7 @@ public class NumberUtilsTest extends AbstractLangTest {
return NumberUtils.isParsable(s);
}
- private boolean isShortParsable(final String s) {
+ private boolean isParsableShort(final String s) {
final NumberFormat instance = NumberFormat.getInstance();
instance.setParseIntegerOnly(false);
try {
@@ -1007,28 +1023,36 @@ public class NumberUtilsTest extends AbstractLangTest {
compareIsCreatableWithCreateNumber("+2.0", true);
}
+ @Test
+ public void testLang1729IsParsableByte() {
+ assertTrue(isParsableByte("1"));
+ assertFalse(isParsableByte("1 2 3"));
+ assertTrue(isParsableByte("123"));
+ assertFalse(isParsableByte("1 2 3"));
+ }
+
@Test
public void testLang1729IsParsableInteger() {
- assertTrue(isIntegerParsable("1"));
- assertFalse(isIntegerParsable("1 2 3"));
- assertTrue(isIntegerParsable("123"));
- assertFalse(isIntegerParsable("1 2 3"));
+ assertTrue(isParsableInteger("1"));
+ assertFalse(isParsableInteger("1 2 3"));
+ assertTrue(isParsableInteger("123"));
+ assertFalse(isParsableInteger("1 2 3"));
}
@Test
public void testLang1729IsParsableLong() {
- assertTrue(isLongParsable("1"));
- assertFalse(isLongParsable("1 2 3"));
- assertTrue(isLongParsable("123"));
- assertFalse(isLongParsable("1 2 3"));
+ assertTrue(isParsableLong("1"));
+ assertFalse(isParsableLong("1 2 3"));
+ assertTrue(isParsableLong("123"));
+ assertFalse(isParsableLong("1 2 3"));
}
@Test
public void testLang1729IsParsableShort() {
- assertTrue(isShortParsable("1"));
- assertFalse(isShortParsable("1 2 3"));
- assertTrue(isShortParsable("123"));
- assertFalse(isShortParsable("1 2 3"));
+ assertTrue(isParsableShort("1"));
+ assertFalse(isParsableShort("1 2 3"));
+ assertTrue(isParsableShort("123"));
+ assertFalse(isParsableShort("1 2 3"));
}
@Test