From fca32ecefdcc4fb2a5e3e6ebfd04bd972005e321 Mon Sep 17 00:00:00 2001 From: Looly Date: Mon, 30 Aug 2021 12:52:10 +0800 Subject: [PATCH] add test --- .../java/cn/hutool/core/math/MathUtil.java | 24 +++++++++++++++++++ .../main/java/cn/hutool/core/math/Money.java | 10 +++++--- .../core/date/LocalDateTimeUtilTest.java | 6 +++++ .../java/cn/hutool/core/math/MoneyTest.java | 23 ++++++++++++++++++ 4 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 hutool-core/src/test/java/cn/hutool/core/math/MoneyTest.java diff --git a/hutool-core/src/main/java/cn/hutool/core/math/MathUtil.java b/hutool-core/src/main/java/cn/hutool/core/math/MathUtil.java index 29f6eb188..c0bc63d27 100644 --- a/hutool-core/src/main/java/cn/hutool/core/math/MathUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/math/MathUtil.java @@ -76,4 +76,28 @@ public class MathUtil { public static List combinationSelect(String[] datas, int m) { return new Combination(datas).select(m); } + + /** + * 金额元转换为分 + * + * @param yuan 金额,单位元 + * @return 金额,单位分 + * @since 5.7.11 + */ + public static long yuanToCent(double yuan) { + return new Money(yuan).getCent(); + } + + /** + * 金额分转换为元 + * + * @param cent 金额,单位分 + * @return 金额,单位元 + * @since 5.7.11 + */ + public static double centToYuan(long cent) { + long yuan = cent / 100; + int centPart = (int) (cent % 100); + return new Money(yuan, centPart).getAmount().doubleValue(); + } } diff --git a/hutool-core/src/main/java/cn/hutool/core/math/Money.java b/hutool-core/src/main/java/cn/hutool/core/math/Money.java index 5d771ebf5..03dcbd9ba 100644 --- a/hutool-core/src/main/java/cn/hutool/core/math/Money.java +++ b/hutool-core/src/main/java/cn/hutool/core/math/Money.java @@ -97,7 +97,7 @@ public class Money implements Serializable, Comparable { *

* 创建一个具有金额yuancent分和缺省币种的货币对象。 * - * @param yuan 金额元数。 + * @param yuan 金额元数,0的情况下表示元的部分从分中截取 * @param cent 金额分数。 */ public Money(long yuan, int cent) { @@ -110,14 +110,18 @@ public class Money implements Serializable, Comparable { *

* 创建一个具有金额yuancent分和指定币种的货币对象。 * - * @param yuan 金额元数。 + * @param yuan 金额元数,0的情况下表示元的部分从分中截取 * @param cent 金额分数。 * @param currency 货币单位 */ public Money(long yuan, int cent, Currency currency) { this.currency = currency; - this.cent = (yuan * getCentFactor()) + (cent % getCentFactor()); + if(0 == yuan) { + this.cent = cent; + } else{ + this.cent = (yuan * getCentFactor()) + (cent % getCentFactor()); + } } /** diff --git a/hutool-core/src/test/java/cn/hutool/core/date/LocalDateTimeUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/date/LocalDateTimeUtilTest.java index 0d3fa84a6..89f924dd3 100644 --- a/hutool-core/src/test/java/cn/hutool/core/date/LocalDateTimeUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/date/LocalDateTimeUtilTest.java @@ -86,6 +86,12 @@ public class LocalDateTimeUtilTest { Assert.assertEquals("2020-01-23", localDate.toString()); } + @Test + public void parseSingleMonthAndDayTest() { + LocalDate localDate = LocalDateTimeUtil.parseDate("2020-1-1", "yyyy-M-d"); + Assert.assertEquals("2020-01-01", localDate.toString()); + } + @Test public void formatTest() { final LocalDateTime localDateTime = LocalDateTimeUtil.parse("2020-01-23T12:23:56"); diff --git a/hutool-core/src/test/java/cn/hutool/core/math/MoneyTest.java b/hutool-core/src/test/java/cn/hutool/core/math/MoneyTest.java new file mode 100644 index 000000000..fd7959d5f --- /dev/null +++ b/hutool-core/src/test/java/cn/hutool/core/math/MoneyTest.java @@ -0,0 +1,23 @@ +package cn.hutool.core.math; + +import org.junit.Assert; +import org.junit.Test; + +public class MoneyTest { + + @Test + public void yuanToCentTest() { + final Money money = new Money("1234.56"); + Assert.assertEquals(123456, money.getCent()); + + Assert.assertEquals(123456, MathUtil.yuanToCent(1234.56)); + } + + @Test + public void centToYuanTest() { + final Money money = new Money(1234, 56); + Assert.assertEquals(1234.56D, money.getAmount().doubleValue(), 2); + + Assert.assertEquals(1234.56D, MathUtil.centToYuan(123456), 2); + } +}