mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-08-18 20:38:02 +08:00
Merge pull request #3007 from zzzj1233/v5-dev
Feat: NumberUtil重载parseXXX方法, 解析失败返回默认值, 代替抛出异常
This commit is contained in:
@@ -160,4 +160,53 @@ public class CharSequenceUtilTest {
|
||||
a = null;
|
||||
Assert.assertNull(CharSequenceUtil.trimToNull(a));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void commonPrefixTest() throws Exception{
|
||||
|
||||
// -------------------------- None match -----------------------
|
||||
|
||||
Assert.assertEquals("", CharSequenceUtil.commonPrefix("", "abc"));
|
||||
Assert.assertEquals("", CharSequenceUtil.commonPrefix(null, "abc"));
|
||||
Assert.assertEquals("", CharSequenceUtil.commonPrefix("abc", null));
|
||||
Assert.assertEquals("", CharSequenceUtil.commonPrefix("abc", ""));
|
||||
|
||||
Assert.assertEquals("", CharSequenceUtil.commonPrefix("azzzj", "bzzzj"));
|
||||
|
||||
Assert.assertEquals("", CharSequenceUtil.commonPrefix("english中文", "french中文"));
|
||||
|
||||
// -------------------------- Matched -----------------------
|
||||
|
||||
Assert.assertEquals("name_", CharSequenceUtil.commonPrefix("name_abc", "name_efg"));
|
||||
|
||||
Assert.assertEquals("zzzj", CharSequenceUtil.commonPrefix("zzzja", "zzzjb"));
|
||||
|
||||
Assert.assertEquals("中文", CharSequenceUtil.commonPrefix("中文english", "中文french"));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void commonSuffixTest() throws Exception{
|
||||
|
||||
// -------------------------- None match -----------------------
|
||||
|
||||
Assert.assertEquals("", CharSequenceUtil.commonSuffix("", "abc"));
|
||||
Assert.assertEquals("", CharSequenceUtil.commonSuffix(null, "abc"));
|
||||
Assert.assertEquals("", CharSequenceUtil.commonSuffix("abc", null));
|
||||
Assert.assertEquals("", CharSequenceUtil.commonSuffix("abc", ""));
|
||||
|
||||
Assert.assertEquals("", CharSequenceUtil.commonSuffix("zzzja", "zzzjb"));
|
||||
|
||||
Assert.assertEquals("", CharSequenceUtil.commonSuffix("中文english", "中文Korean"));
|
||||
|
||||
// -------------------------- Matched -----------------------
|
||||
|
||||
Assert.assertEquals("_name", CharSequenceUtil.commonSuffix("abc_name", "efg_name"));
|
||||
|
||||
Assert.assertEquals("zzzj", CharSequenceUtil.commonSuffix("abczzzj", "efgzzzj"));
|
||||
|
||||
Assert.assertEquals("中文", CharSequenceUtil.commonSuffix("english中文", "Korean中文"));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -10,6 +10,12 @@ import java.math.BigInteger;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.Set;
|
||||
|
||||
import static cn.hutool.core.util.NumberUtil.parseDouble;
|
||||
import static cn.hutool.core.util.NumberUtil.parseFloat;
|
||||
import static org.hamcrest.CoreMatchers.equalTo;
|
||||
import static org.hamcrest.CoreMatchers.nullValue;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
|
||||
/**
|
||||
* {@link NumberUtil} 单元测试类
|
||||
*
|
||||
@@ -296,6 +302,23 @@ public class NumberUtilTest {
|
||||
Assert.assertEquals(0, v1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parseIntTest4() {
|
||||
|
||||
// -------------------------- Parse failed -----------------------
|
||||
|
||||
assertThat(NumberUtil.parseInt("abc", null), nullValue());
|
||||
|
||||
assertThat(NumberUtil.parseInt("abc", 456), equalTo(456));
|
||||
|
||||
// -------------------------- Parse success -----------------------
|
||||
|
||||
assertThat(NumberUtil.parseInt("123.abc", 789), equalTo(123));
|
||||
|
||||
assertThat(NumberUtil.parseInt("123.3", null), equalTo(123));
|
||||
|
||||
}
|
||||
|
||||
@Test(expected = NumberFormatException.class)
|
||||
public void parseNumberTest4(){
|
||||
// issue#I5M55F
|
||||
@@ -324,6 +347,29 @@ public class NumberUtilTest {
|
||||
Assert.assertTrue(number instanceof BigDecimal);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parseNumberTest3(){
|
||||
|
||||
// -------------------------- Parse failed -----------------------
|
||||
|
||||
assertThat(NumberUtil.parseNumber("abc", null), nullValue());
|
||||
|
||||
assertThat(NumberUtil.parseNumber(StrUtil.EMPTY, null), nullValue());
|
||||
|
||||
assertThat(NumberUtil.parseNumber(StrUtil.repeat(StrUtil.SPACE, 10), null), nullValue());
|
||||
|
||||
assertThat(NumberUtil.parseNumber("abc", 456).intValue(), equalTo(456));
|
||||
|
||||
// -------------------------- Parse success -----------------------
|
||||
|
||||
assertThat(NumberUtil.parseNumber("123.abc", 789).intValue(), equalTo(123));
|
||||
|
||||
assertThat(NumberUtil.parseNumber("123.3", null).doubleValue(), equalTo(123.3D));
|
||||
|
||||
assertThat(NumberUtil.parseNumber("0.123.3", null).doubleValue(), equalTo(0.123D));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parseHexNumberTest() {
|
||||
// 千位分隔符去掉
|
||||
@@ -362,6 +408,69 @@ public class NumberUtilTest {
|
||||
Assert.assertEquals(0, number);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parseLongTest2() {
|
||||
|
||||
// -------------------------- Parse failed -----------------------
|
||||
|
||||
Long v1 = NumberUtil.parseLong(null, null);
|
||||
assertThat(v1, nullValue());
|
||||
|
||||
Long v2 = NumberUtil.parseLong(StrUtil.EMPTY, null);
|
||||
assertThat(v2, nullValue());
|
||||
|
||||
Long v3 = NumberUtil.parseLong("L3221", 1233L);
|
||||
assertThat(v3, equalTo(1233L));
|
||||
|
||||
// -------------------------- Parse success -----------------------
|
||||
|
||||
Long v4 = NumberUtil.parseLong("1233L", null);
|
||||
assertThat(v4, equalTo(1233L));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parseFloatTest() throws Exception {
|
||||
|
||||
// -------------------------- Parse failed -----------------------
|
||||
|
||||
assertThat(parseFloat("abc", null), nullValue());
|
||||
|
||||
assertThat(parseFloat("a123.33", null), nullValue());
|
||||
|
||||
assertThat(parseFloat("..123", null), nullValue());
|
||||
|
||||
assertThat(parseFloat(StrUtil.EMPTY, 1233F), equalTo(1233F));
|
||||
|
||||
// -------------------------- Parse success -----------------------
|
||||
|
||||
assertThat(parseFloat("123.33a", null), equalTo(123.33F));
|
||||
|
||||
assertThat(parseFloat(".123", null), equalTo(0.123F));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parseDoubleTest() throws Exception {
|
||||
|
||||
// -------------------------- Parse failed -----------------------
|
||||
|
||||
assertThat(parseDouble("abc", null), nullValue());
|
||||
|
||||
assertThat(parseDouble("a123.33", null), nullValue());
|
||||
|
||||
assertThat(parseDouble("..123", null), nullValue());
|
||||
|
||||
assertThat(parseDouble(StrUtil.EMPTY, 1233D), equalTo(1233D));
|
||||
|
||||
// -------------------------- Parse success -----------------------
|
||||
|
||||
assertThat(parseDouble("123.33a", null), equalTo(123.33D));
|
||||
|
||||
assertThat(parseDouble(".123", null), equalTo(0.123D));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void factorialTest(){
|
||||
long factorial = NumberUtil.factorial(0);
|
||||
|
Reference in New Issue
Block a user