[공통] util → framework 유틸 (ACM-CM-002)
This commit is contained in:
parent
9f25c6689f
commit
3bb79c8477
1 changed files with 221 additions and 0 deletions
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
Reference in a new issue