Merge branch 'v5-dev' into factorial_improved

This commit is contained in:
Golden Looly
2020-09-28 19:00:19 +08:00
committed by GitHub
121 changed files with 2160 additions and 975 deletions

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil;
import org.junit.Assert;
import org.junit.Test;
import java.math.BigDecimal;
import java.util.concurrent.atomic.AtomicLong;
public class ConvertToNumberTest {
@@ -31,4 +32,13 @@ public class ConvertToNumberTest {
assert date != null;
Assert.assertEquals(date.getTime(), dateLong.longValue());
}
@Test
public void toBigDecimalTest(){
BigDecimal bigDecimal = Convert.toBigDecimal("1.1f");
Assert.assertEquals(1.1f, bigDecimal.floatValue(), 1);
bigDecimal = Convert.toBigDecimal("1L");
Assert.assertEquals(1L, bigDecimal.longValue());
}
}

View File

@@ -3,7 +3,6 @@ package cn.hutool.core.date;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.BetweenFormater.Level;
import cn.hutool.core.date.format.FastDateFormat;
import cn.hutool.core.lang.Console;
import org.junit.Assert;
import org.junit.Test;

View File

@@ -74,4 +74,9 @@ public class NetUtilTest {
Assert.assertEquals("/", httpCookie.getPath());
Assert.assertEquals("cookiedomain.com", httpCookie.getDomain());
}
@Test
public void getLocalHostNameTest() {
Assert.assertNotNull(NetUtil.getLocalHostName());
}
}

View File

@@ -37,4 +37,11 @@ public class EscapeUtilTest {
String unescape = EscapeUtil.unescape(escape);
Assert.assertEquals(str, unescape);
}
@Test
public void escapeSinleQuotesTest(){
String str = "'some text with single quotes'";
final String s = EscapeUtil.escapeHtml4(str);
Assert.assertEquals(str, s);
}
}

View File

@@ -1,261 +1,272 @@
package cn.hutool.core.util;
import org.junit.Assert;
import org.junit.Test;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
* {@link NumberUtil} 单元测试类
*
* @author Looly
*
*/
public class NumberUtilTest {
@Test
public void addTest() {
Float a = 3.15f;
Double b = 4.22;
double result = NumberUtil.add(a, b).doubleValue();
Assert.assertEquals(7.37, result, 2);
}
@Test
public void addTest2() {
double a = 3.15f;
double b = 4.22;
double result = NumberUtil.add(a, b);
Assert.assertEquals(7.37, result, 2);
}
@Test
public void addTest3() {
float a = 3.15f;
double b = 4.22;
double result = NumberUtil.add(a, b, a, b).doubleValue();
Assert.assertEquals(14.74, result, 2);
}
@Test
public void addTest4() {
BigDecimal result = NumberUtil.add(new BigDecimal("133"), new BigDecimal("331"));
Assert.assertEquals(new BigDecimal("464"), result);
}
@Test
public void isIntegerTest() {
Assert.assertTrue(NumberUtil.isInteger("-12"));
Assert.assertTrue(NumberUtil.isInteger("256"));
Assert.assertTrue(NumberUtil.isInteger("0256"));
Assert.assertTrue(NumberUtil.isInteger("0"));
Assert.assertFalse(NumberUtil.isInteger("23.4"));
}
@Test
public void isLongTest() {
Assert.assertTrue(NumberUtil.isLong("-12"));
Assert.assertTrue(NumberUtil.isLong("256"));
Assert.assertTrue(NumberUtil.isLong("0256"));
Assert.assertTrue(NumberUtil.isLong("0"));
Assert.assertFalse(NumberUtil.isLong("23.4"));
}
@Test
public void isNumberTest() {
Assert.assertTrue(NumberUtil.isNumber("28.55"));
Assert.assertTrue(NumberUtil.isNumber("0"));
Assert.assertTrue(NumberUtil.isNumber("+100.10"));
Assert.assertTrue(NumberUtil.isNumber("-22.022"));
Assert.assertTrue(NumberUtil.isNumber("0X22"));
}
@Test
public void divTest() {
double result = NumberUtil.div(0, 1);
Assert.assertEquals(0.0, result, 0);
}
@Test
public void roundTest() {
// 四舍
String round1 = NumberUtil.roundStr(2.674, 2);
String round2 = NumberUtil.roundStr("2.674", 2);
Assert.assertEquals("2.67", round1);
Assert.assertEquals("2.67", round2);
// 五入
String round3 = NumberUtil.roundStr(2.675, 2);
String round4 = NumberUtil.roundStr("2.675", 2);
Assert.assertEquals("2.68", round3);
Assert.assertEquals("2.68", round4);
// 四舍六入五成双
String round31 = NumberUtil.roundStr(4.245, 2, RoundingMode.HALF_EVEN);
String round41 = NumberUtil.roundStr("4.2451", 2, RoundingMode.HALF_EVEN);
Assert.assertEquals("4.24", round31);
Assert.assertEquals("4.25", round41);
// 补0
String round5 = NumberUtil.roundStr(2.6005, 2);
String round6 = NumberUtil.roundStr("2.6005", 2);
Assert.assertEquals("2.60", round5);
Assert.assertEquals("2.60", round6);
// 补0
String round7 = NumberUtil.roundStr(2.600, 2);
String round8 = NumberUtil.roundStr("2.600", 2);
Assert.assertEquals("2.60", round7);
Assert.assertEquals("2.60", round8);
}
@Test
public void roundStrTest() {
String roundStr = NumberUtil.roundStr(2.647, 2);
Assert.assertEquals(roundStr, "2.65");
}
@Test
public void roundHalfEvenTest() {
String roundStr = NumberUtil.roundHalfEven(4.245, 2).toString();
Assert.assertEquals(roundStr, "4.24");
roundStr = NumberUtil.roundHalfEven(4.2450, 2).toString();
Assert.assertEquals(roundStr, "4.24");
roundStr = NumberUtil.roundHalfEven(4.2451, 2).toString();
Assert.assertEquals(roundStr, "4.25");
roundStr = NumberUtil.roundHalfEven(4.2250, 2).toString();
Assert.assertEquals(roundStr, "4.22");
roundStr = NumberUtil.roundHalfEven(1.2050, 2).toString();
Assert.assertEquals(roundStr, "1.20");
roundStr = NumberUtil.roundHalfEven(1.2150, 2).toString();
Assert.assertEquals(roundStr, "1.22");
roundStr = NumberUtil.roundHalfEven(1.2250, 2).toString();
Assert.assertEquals(roundStr, "1.22");
roundStr = NumberUtil.roundHalfEven(1.2350, 2).toString();
Assert.assertEquals(roundStr, "1.24");
roundStr = NumberUtil.roundHalfEven(1.2450, 2).toString();
Assert.assertEquals(roundStr, "1.24");
roundStr = NumberUtil.roundHalfEven(1.2550, 2).toString();
Assert.assertEquals(roundStr, "1.26");
roundStr = NumberUtil.roundHalfEven(1.2650, 2).toString();
Assert.assertEquals(roundStr, "1.26");
roundStr = NumberUtil.roundHalfEven(1.2750, 2).toString();
Assert.assertEquals(roundStr, "1.28");
roundStr = NumberUtil.roundHalfEven(1.2850, 2).toString();
Assert.assertEquals(roundStr, "1.28");
roundStr = NumberUtil.roundHalfEven(1.2950, 2).toString();
Assert.assertEquals(roundStr, "1.30");
}
@Test
public void decimalFormatTest() {
long c = 299792458;// 光速
String format = NumberUtil.decimalFormat(",###", c);
Assert.assertEquals("299,792,458", format);
}
@Test
public void decimalFormatMoneyTest() {
double c = 299792400.543534534;
String format = NumberUtil.decimalFormatMoney(c);
Assert.assertEquals("299,792,400.54", format);
double value = 0.5;
String money = NumberUtil.decimalFormatMoney(value);
Assert.assertEquals("0.50", money);
}
@Test
public void equalsTest() {
Assert.assertTrue(NumberUtil.equals(new BigDecimal("0.00"), BigDecimal.ZERO));
}
@Test
public void formatPercentTest() {
String str = NumberUtil.formatPercent(0.33543545, 2);
Assert.assertEquals("33.54%", str);
}
@Test
public void toBigDecimalTest() {
double a = 3.14;
BigDecimal bigDecimal = NumberUtil.toBigDecimal(a);
Assert.assertEquals("3.14", bigDecimal.toString());
}
@Test
public void maxTest() {
int max = NumberUtil.max(5,4,3,6,1);
Assert.assertEquals(6, max);
}
@Test
public void minTest() {
int min = NumberUtil.min(5,4,3,6,1);
Assert.assertEquals(1, min);
}
@Test
public void parseIntTest() {
int v1 = NumberUtil.parseInt("0xFF");
Assert.assertEquals(255, v1);
int v2 = NumberUtil.parseInt("010");
Assert.assertEquals(10, v2);
int v3 = NumberUtil.parseInt("10");
Assert.assertEquals(10, v3);
int v4 = NumberUtil.parseInt(" ");
Assert.assertEquals(0, v4);
int v5 = NumberUtil.parseInt("10F");
Assert.assertEquals(10, v5);
int v6 = NumberUtil.parseInt("22.4D");
Assert.assertEquals(22, v6);
int v7 = NumberUtil.parseInt("0");
Assert.assertEquals(0, v7);
}
@Test
public void parseLongTest() {
long v1 = NumberUtil.parseLong("0xFF");
Assert.assertEquals(255L, v1);
long v2 = NumberUtil.parseLong("010");
Assert.assertEquals(10L, v2);
long v3 = NumberUtil.parseLong("10");
Assert.assertEquals(10L, v3);
long v4 = NumberUtil.parseLong(" ");
Assert.assertEquals(0L, v4);
long v5 = NumberUtil.parseLong("10F");
Assert.assertEquals(10L, v5);
long v6 = NumberUtil.parseLong("22.4D");
Assert.assertEquals(22L, v6);
}
@Test
public void factorialTest(){
long factorial = NumberUtil.factorial(0);
Assert.assertEquals(1, factorial);
Assert.assertEquals(1L, NumberUtil.factorial(1));
Assert.assertEquals(1307674368000L, NumberUtil.factorial(15));
Assert.assertEquals(2432902008176640000L, NumberUtil.factorial(20));
factorial = NumberUtil.factorial(5, 0);
Assert.assertEquals(120, factorial);
factorial = NumberUtil.factorial(5, 1);
Assert.assertEquals(120, factorial);
Assert.assertEquals(5, NumberUtil.factorial(5, 4));
Assert.assertEquals(2432902008176640000L, NumberUtil.factorial(20, 0));
}
@Test
public void mulTest(){
final BigDecimal mul = NumberUtil.mul(new BigDecimal("10"), null);
Assert.assertEquals(BigDecimal.ZERO, mul);
}
}
package cn.hutool.core.util;
import org.junit.Assert;
import org.junit.Test;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
* {@link NumberUtil} 单元测试类
*
* @author Looly
*
*/
public class NumberUtilTest {
@Test
public void addTest() {
Float a = 3.15f;
Double b = 4.22;
double result = NumberUtil.add(a, b).doubleValue();
Assert.assertEquals(7.37, result, 2);
}
@Test
public void addTest2() {
double a = 3.15f;
double b = 4.22;
double result = NumberUtil.add(a, b);
Assert.assertEquals(7.37, result, 2);
}
@Test
public void addTest3() {
float a = 3.15f;
double b = 4.22;
double result = NumberUtil.add(a, b, a, b).doubleValue();
Assert.assertEquals(14.74, result, 2);
}
@Test
public void addTest4() {
BigDecimal result = NumberUtil.add(new BigDecimal("133"), new BigDecimal("331"));
Assert.assertEquals(new BigDecimal("464"), result);
}
@Test
public void isIntegerTest() {
Assert.assertTrue(NumberUtil.isInteger("-12"));
Assert.assertTrue(NumberUtil.isInteger("256"));
Assert.assertTrue(NumberUtil.isInteger("0256"));
Assert.assertTrue(NumberUtil.isInteger("0"));
Assert.assertFalse(NumberUtil.isInteger("23.4"));
}
@Test
public void isLongTest() {
Assert.assertTrue(NumberUtil.isLong("-12"));
Assert.assertTrue(NumberUtil.isLong("256"));
Assert.assertTrue(NumberUtil.isLong("0256"));
Assert.assertTrue(NumberUtil.isLong("0"));
Assert.assertFalse(NumberUtil.isLong("23.4"));
}
@Test
public void isNumberTest() {
Assert.assertTrue(NumberUtil.isNumber("28.55"));
Assert.assertTrue(NumberUtil.isNumber("0"));
Assert.assertTrue(NumberUtil.isNumber("+100.10"));
Assert.assertTrue(NumberUtil.isNumber("-22.022"));
Assert.assertTrue(NumberUtil.isNumber("0X22"));
}
@Test
public void divTest() {
double result = NumberUtil.div(0, 1);
Assert.assertEquals(0.0, result, 0);
}
@Test
public void roundTest() {
// 四舍
String round1 = NumberUtil.roundStr(2.674, 2);
String round2 = NumberUtil.roundStr("2.674", 2);
Assert.assertEquals("2.67", round1);
Assert.assertEquals("2.67", round2);
// 五入
String round3 = NumberUtil.roundStr(2.675, 2);
String round4 = NumberUtil.roundStr("2.675", 2);
Assert.assertEquals("2.68", round3);
Assert.assertEquals("2.68", round4);
// 四舍六入五成双
String round31 = NumberUtil.roundStr(4.245, 2, RoundingMode.HALF_EVEN);
String round41 = NumberUtil.roundStr("4.2451", 2, RoundingMode.HALF_EVEN);
Assert.assertEquals("4.24", round31);
Assert.assertEquals("4.25", round41);
// 补0
String round5 = NumberUtil.roundStr(2.6005, 2);
String round6 = NumberUtil.roundStr("2.6005", 2);
Assert.assertEquals("2.60", round5);
Assert.assertEquals("2.60", round6);
// 补0
String round7 = NumberUtil.roundStr(2.600, 2);
String round8 = NumberUtil.roundStr("2.600", 2);
Assert.assertEquals("2.60", round7);
Assert.assertEquals("2.60", round8);
}
@Test
public void roundStrTest() {
String roundStr = NumberUtil.roundStr(2.647, 2);
Assert.assertEquals(roundStr, "2.65");
}
@Test
public void roundHalfEvenTest() {
String roundStr = NumberUtil.roundHalfEven(4.245, 2).toString();
Assert.assertEquals(roundStr, "4.24");
roundStr = NumberUtil.roundHalfEven(4.2450, 2).toString();
Assert.assertEquals(roundStr, "4.24");
roundStr = NumberUtil.roundHalfEven(4.2451, 2).toString();
Assert.assertEquals(roundStr, "4.25");
roundStr = NumberUtil.roundHalfEven(4.2250, 2).toString();
Assert.assertEquals(roundStr, "4.22");
roundStr = NumberUtil.roundHalfEven(1.2050, 2).toString();
Assert.assertEquals(roundStr, "1.20");
roundStr = NumberUtil.roundHalfEven(1.2150, 2).toString();
Assert.assertEquals(roundStr, "1.22");
roundStr = NumberUtil.roundHalfEven(1.2250, 2).toString();
Assert.assertEquals(roundStr, "1.22");
roundStr = NumberUtil.roundHalfEven(1.2350, 2).toString();
Assert.assertEquals(roundStr, "1.24");
roundStr = NumberUtil.roundHalfEven(1.2450, 2).toString();
Assert.assertEquals(roundStr, "1.24");
roundStr = NumberUtil.roundHalfEven(1.2550, 2).toString();
Assert.assertEquals(roundStr, "1.26");
roundStr = NumberUtil.roundHalfEven(1.2650, 2).toString();
Assert.assertEquals(roundStr, "1.26");
roundStr = NumberUtil.roundHalfEven(1.2750, 2).toString();
Assert.assertEquals(roundStr, "1.28");
roundStr = NumberUtil.roundHalfEven(1.2850, 2).toString();
Assert.assertEquals(roundStr, "1.28");
roundStr = NumberUtil.roundHalfEven(1.2950, 2).toString();
Assert.assertEquals(roundStr, "1.30");
}
@Test
public void decimalFormatTest() {
long c = 299792458;// 光速
String format = NumberUtil.decimalFormat(",###", c);
Assert.assertEquals("299,792,458", format);
}
@Test
public void decimalFormatMoneyTest() {
double c = 299792400.543534534;
String format = NumberUtil.decimalFormatMoney(c);
Assert.assertEquals("299,792,400.54", format);
double value = 0.5;
String money = NumberUtil.decimalFormatMoney(value);
Assert.assertEquals("0.50", money);
}
@Test
public void equalsTest() {
Assert.assertTrue(NumberUtil.equals(new BigDecimal("0.00"), BigDecimal.ZERO));
}
@Test
public void formatPercentTest() {
String str = NumberUtil.formatPercent(0.33543545, 2);
Assert.assertEquals("33.54%", str);
}
@Test
public void toBigDecimalTest() {
double a = 3.14;
BigDecimal bigDecimal = NumberUtil.toBigDecimal(a);
Assert.assertEquals("3.14", bigDecimal.toString());
}
@Test
public void maxTest() {
int max = NumberUtil.max(5,4,3,6,1);
Assert.assertEquals(6, max);
}
@Test
public void minTest() {
int min = NumberUtil.min(5,4,3,6,1);
Assert.assertEquals(1, min);
}
@Test
public void parseIntTest() {
int v1 = NumberUtil.parseInt("0xFF");
Assert.assertEquals(255, v1);
int v2 = NumberUtil.parseInt("010");
Assert.assertEquals(10, v2);
int v3 = NumberUtil.parseInt("10");
Assert.assertEquals(10, v3);
int v4 = NumberUtil.parseInt(" ");
Assert.assertEquals(0, v4);
int v5 = NumberUtil.parseInt("10F");
Assert.assertEquals(10, v5);
int v6 = NumberUtil.parseInt("22.4D");
Assert.assertEquals(22, v6);
int v7 = NumberUtil.parseInt("0");
Assert.assertEquals(0, v7);
}
@Test
public void parseLongTest() {
long v1 = NumberUtil.parseLong("0xFF");
Assert.assertEquals(255L, v1);
long v2 = NumberUtil.parseLong("010");
Assert.assertEquals(10L, v2);
long v3 = NumberUtil.parseLong("10");
Assert.assertEquals(10L, v3);
long v4 = NumberUtil.parseLong(" ");
Assert.assertEquals(0L, v4);
long v5 = NumberUtil.parseLong("10F");
Assert.assertEquals(10L, v5);
long v6 = NumberUtil.parseLong("22.4D");
Assert.assertEquals(22L, v6);
}
@Test
public void factorialTest(){
long factorial = NumberUtil.factorial(0);
Assert.assertEquals(1, factorial);
Assert.assertEquals(1L, NumberUtil.factorial(1));
Assert.assertEquals(1307674368000L, NumberUtil.factorial(15));
Assert.assertEquals(2432902008176640000L, NumberUtil.factorial(20));
factorial = NumberUtil.factorial(5, 0);
Assert.assertEquals(120, factorial);
factorial = NumberUtil.factorial(5, 1);
Assert.assertEquals(120, factorial);
Assert.assertEquals(5, NumberUtil.factorial(5, 4));
Assert.assertEquals(2432902008176640000L, NumberUtil.factorial(20, 0));
}
@Test
public void mulTest(){
final BigDecimal mul = NumberUtil.mul(new BigDecimal("10"), null);
Assert.assertEquals(BigDecimal.ZERO, mul);
}
@Test
public void isPowerOfTwoTest() {
Assert.assertEquals(false, NumberUtil.isPowerOfTwo(-1));
Assert.assertEquals(true, NumberUtil.isPowerOfTwo(16));
Assert.assertEquals(true, NumberUtil.isPowerOfTwo(65536));
Assert.assertEquals(true, NumberUtil.isPowerOfTwo(1));
Assert.assertEquals(false, NumberUtil.isPowerOfTwo(17));
}
}

View File

@@ -84,4 +84,11 @@ public class URLUtilTest {
String encode2 = URLUtil.encodeQuery(body);
Assert.assertEquals("366466+-+%E5%89%AF%E6%9C%AC.jpg", encode2);
}
@Test
public void getPathTest(){
String url = " http://www.aaa.bbb/search?scope=ccc&q=ddd";
String path = URLUtil.getPath(url);
Assert.assertEquals("/search", path);
}
}