From 3bb79c847793cc1467da87cb9a3e45a25502642c Mon Sep 17 00:00:00 2001 From: forge-bot Date: Sat, 18 Jul 2026 11:03:16 +0000 Subject: [PATCH] =?UTF-8?q?[=EA=B3=B5=ED=86=B5]=20util=20=E2=86=92=20frame?= =?UTF-8?q?work=20=EC=9C=A0=ED=8B=B8=20(ACM-CM-002)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/util/AmountUtilTest.java | 221 ++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 boot/common-framework/src/test/java/com/klaro/acquirecore/framework/util/AmountUtilTest.java diff --git a/boot/common-framework/src/test/java/com/klaro/acquirecore/framework/util/AmountUtilTest.java b/boot/common-framework/src/test/java/com/klaro/acquirecore/framework/util/AmountUtilTest.java new file mode 100644 index 0000000..585c860 --- /dev/null +++ b/boot/common-framework/src/test/java/com/klaro/acquirecore/framework/util/AmountUtilTest.java @@ -0,0 +1,221 @@ +package com.klaro.acquirecore.framework.util; + +import org.junit.jupiter.api.Test; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +import static org.junit.jupiter.api.Assertions.*; + +class AmountUtilTest { + + @Test + void of_withStringValue_returnsBigDecimal() { + BigDecimal result = AmountUtil.of("1234.56"); + assertEquals(new BigDecimal("1234.56"), result); + } + + @Test + void of_withLongValue_returnsBigDecimal() { + BigDecimal result = AmountUtil.of(1000L); + assertEquals(new BigDecimal("1000"), result); + } + + @Test + void of_withDoubleValue_returnsBigDecimal() { + BigDecimal result = AmountUtil.of(1234.56); + assertEquals(new BigDecimal("1234.56"), result); + } + + @Test + void add_addsTwoValues() { + BigDecimal a = new BigDecimal("100.50"); + BigDecimal b = new BigDecimal("50.25"); + BigDecimal result = AmountUtil.add(a, b); + assertEquals(new BigDecimal("150.75"), result); + } + + @Test + void subtract_subtractsValues() { + BigDecimal a = new BigDecimal("100.50"); + BigDecimal b = new BigDecimal("50.25"); + BigDecimal result = AmountUtil.subtract(a, b); + assertEquals(new BigDecimal("50.25"), result); + } + + @Test + void multiply_multipliesValues() { + BigDecimal a = new BigDecimal("10.00"); + BigDecimal b = new BigDecimal("5.00"); + BigDecimal result = AmountUtil.multiply(a, b); + assertEquals(new BigDecimal("50.00"), result); + } + + @Test + void divide_dividesValues() { + BigDecimal dividend = new BigDecimal("100.00"); + BigDecimal divisor = new BigDecimal("4.00"); + BigDecimal result = AmountUtil.divide(dividend, divisor); + assertEquals(new BigDecimal("25.00"), result); + } + + @Test + void divide_byZero_throwsException() { + BigDecimal dividend = new BigDecimal("100.00"); + BigDecimal divisor = BigDecimal.ZERO; + assertThrows(ArithmeticException.class, () -> AmountUtil.divide(dividend, divisor)); + } + + @Test + void round_roundsToDefaultScale() { + BigDecimal value = new BigDecimal("123.456"); + BigDecimal result = AmountUtil.round(value); + assertEquals(new BigDecimal("123.46"), result); + } + + @Test + void round_roundsWithCustomScaleAndRoundingMode() { + BigDecimal value = new BigDecimal("123.456"); + BigDecimal result = AmountUtil.round(value, 3, RoundingMode.HALF_UP); + assertEquals(new BigDecimal("123.456"), result); + } + + @Test + void percentage_calculatesCorrectPercentage() { + BigDecimal value = new BigDecimal("1000.00"); + BigDecimal percentage = new BigDecimal("10"); + BigDecimal result = AmountUtil.percentage(value, percentage); + assertEquals(new BigDecimal("100.00"), result); + } + + @Test + void addPercentage_addsPercentageToValue() { + BigDecimal value = new BigDecimal("1000.00"); + BigDecimal percentage = new BigDecimal("10"); + BigDecimal result = AmountUtil.addPercentage(value, percentage); + assertEquals(new BigDecimal("1100.00"), result); + } + + @Test + void subtractPercentage_subtractsPercentageFromValue() { + BigDecimal value = new BigDecimal("1000.00"); + BigDecimal percentage = new BigDecimal("10"); + BigDecimal result = AmountUtil.subtractPercentage(value, percentage); + assertEquals(new BigDecimal("900.00"), result); + } + + @Test + void formatKoreanWon_formatsCorrectly() { + BigDecimal amount = new BigDecimal("1234567"); + String result = AmountUtil.formatKoreanWon(amount); + assertEquals("₩1,234,567", result); + } + + @Test + void formatCurrency_formatsWithTwoDecimals() { + BigDecimal amount = new BigDecimal("1234.5"); + String result = AmountUtil.formatCurrency(amount); + assertEquals("1,234.50", result); + } + + @Test + void compare_comparesValues() { + BigDecimal a = new BigDecimal("100.00"); + BigDecimal b = new BigDecimal("200.00"); + assertEquals(-1, AmountUtil.compare(a, b)); + assertEquals(1, AmountUtil.compare(b, a)); + assertEquals(0, AmountUtil.compare(a, new BigDecimal("100.00"))); + } + + @Test + void isGreaterThan_returnsCorrectResult() { + BigDecimal a = new BigDecimal("200.00"); + BigDecimal b = new BigDecimal("100.00"); + assertTrue(AmountUtil.isGreaterThan(a, b)); + assertFalse(AmountUtil.isGreaterThan(b, a)); + } + + @Test + void isLessThan_returnsCorrectResult() { + BigDecimal a = new BigDecimal("100.00"); + BigDecimal b = new BigDecimal("200.00"); + assertTrue(AmountUtil.isLessThan(a, b)); + assertFalse(AmountUtil.isLessThan(b, a)); + } + + @Test + void isZero_withZeroValue_returnsTrue() { + assertTrue(AmountUtil.isZero(BigDecimal.ZERO)); + } + + @Test + void isPositive_withPositiveValue_returnsTrue() { + assertTrue(AmountUtil.isPositive(new BigDecimal("1.00"))); + } + + @Test + void isNegative_withNegativeValue_returnsTrue() { + assertTrue(AmountUtil.isNegative(new BigDecimal("-1.00"))); + } + + @Test + void abs_returnsAbsoluteValue() { + BigDecimal value = new BigDecimal("-100.00"); + BigDecimal result = AmountUtil.abs(value); + assertEquals(new BigDecimal("100.00"), result); + } + + @Test + void negate_negatesValue() { + BigDecimal value = new BigDecimal("100.00"); + BigDecimal result = AmountUtil.negate(value); + assertEquals(new BigDecimal("-100.00"), result); + } + + @Test + void max_returnsMaximumValue() { + BigDecimal a = new BigDecimal("100.00"); + BigDecimal b = new BigDecimal("200.00"); + BigDecimal result = AmountUtil.max(a, b); + assertEquals(new BigDecimal("200.00"), result); + } + + @Test + void min_returnsMinimumValue() { + BigDecimal a = new BigDecimal("100.00"); + BigDecimal b = new BigDecimal("200.00"); + BigDecimal result = AmountUtil.min(a, b); + assertEquals(new BigDecimal("100.00"), result); + } + + @Test + void parseAmount_withCurrencySymbol_parsesCorrectly() { + BigDecimal result = AmountUtil.parseAmount("₩1,000,000"); + assertEquals(new BigDecimal("1000000"), result); + } + + @Test + void isValidAmount_withValidAmount_returnsTrue() { + assertTrue(AmountUtil.isValidAmount("₩1,000,000")); + assertTrue(AmountUtil.isValidAmount("1000.50")); + } + + @Test + void isValidAmount_withInvalidAmount_returnsFalse() { + assertFalse(AmountUtil.isValidAmount("invalid")); + assertFalse(AmountUtil.isValidAmount(null)); + } + + @Test + void fromCents_convertsToDecimal() { + BigDecimal result = AmountUtil.fromCents(123456); + assertEquals(new BigDecimal("1234.56"), result); + } + + @Test + void toCents_convertsToCents() { + BigDecimal amount = new BigDecimal("1234.56"); + long result = AmountUtil.toCents(amount); + assertEquals(123456, result); + } +}