From 903a0a4c0e61cbf1f5e3451c68e36dd0a5e749ad Mon Sep 17 00:00:00 2001 From: forge-bot Date: Sat, 18 Jul 2026 11:09:18 +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/FrameworkUtilTest.java | 161 ++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 boot/common-framework/src/test/java/com/klaro/acquirecore/framework/util/FrameworkUtilTest.java diff --git a/boot/common-framework/src/test/java/com/klaro/acquirecore/framework/util/FrameworkUtilTest.java b/boot/common-framework/src/test/java/com/klaro/acquirecore/framework/util/FrameworkUtilTest.java new file mode 100644 index 0000000..0cca501 --- /dev/null +++ b/boot/common-framework/src/test/java/com/klaro/acquirecore/framework/util/FrameworkUtilTest.java @@ -0,0 +1,161 @@ +package com.klaro.acquirecore.framework.util; + +import org.junit.jupiter.api.Test; +import java.math.BigDecimal; +import java.time.LocalDate; + +import static org.junit.jupiter.api.Assertions.*; + +class FrameworkUtilTest { + + // DateUtil Tests + @Test + void dateUtil_parse_ValidDate() { + LocalDate result = DateUtil.parse("2024-01-15"); + assertNotNull(result); + assertEquals(2024, result.getYear()); + assertEquals(1, result.getMonthValue()); + assertEquals(15, result.getDayOfMonth()); + } + + @Test + void dateUtil_parse_InvalidDate() { + assertNull(DateUtil.parse("invalid")); + assertNull(DateUtil.parse(null)); + assertNull(DateUtil.parse("")); + } + + @Test + void dateUtil_format() { + assertEquals("2024-03-20", DateUtil.format(LocalDate.of(2024, 3, 20))); + assertEquals("", DateUtil.format((LocalDate) null)); + } + + @Test + void dateUtil_diffDays() { + assertEquals(10, DateUtil.diffDays(LocalDate.of(2024, 1, 1), LocalDate.of(2024, 1, 11))); + assertEquals(-5, DateUtil.diffDays(LocalDate.of(2024, 1, 15), LocalDate.of(2024, 1, 10))); + assertEquals(0, DateUtil.diffDays(null, LocalDate.now())); + } + + @Test + void dateUtil_addDays() { + assertEquals(LocalDate.of(2024, 1, 20), DateUtil.addDays(LocalDate.of(2024, 1, 15), 5)); + assertEquals(LocalDate.of(2024, 1, 5), DateUtil.addDays(LocalDate.of(2024, 1, 15), -10)); + assertNull(DateUtil.addDays(null, 5)); + } + + @Test + void dateUtil_today() { + assertEquals(LocalDate.now(), DateUtil.today()); + } + + // AmountUtil Tests + @Test + void amountUtil_parse_ValidAmount() { + assertEquals(new BigDecimal("1000.00"), AmountUtil.parse("1000")); + assertEquals(new BigDecimal("1000.50"), AmountUtil.parse("1000.50")); + assertEquals(new BigDecimal("-500.25"), AmountUtil.parse("-500.25")); + assertEquals(new BigDecimal("1000.00"), AmountUtil.parse("KRW 1000")); + } + + @Test + void amountUtil_parse_InvalidAmount() { + assertNull(AmountUtil.parse("invalid")); + assertNull(AmountUtil.parse(null)); + assertNull(AmountUtil.parse("")); + } + + @Test + void amountUtil_format() { + assertEquals("KRW 1000.50", AmountUtil.format(new BigDecimal("1000.50"))); + assertEquals("USD 1000.50", AmountUtil.format(new BigDecimal("1000.50"), "USD")); + assertEquals("", AmountUtil.format(null)); + } + + @Test + void amountUtil_add() { + assertEquals(new BigDecimal("150.75"), AmountUtil.add(new BigDecimal("100.50"), new BigDecimal("50.25"))); + assertNull(AmountUtil.add(null, new BigDecimal("10"))); + } + + @Test + void amountUtil_subtract() { + assertEquals(new BigDecimal("50.25"), AmountUtil.subtract(new BigDecimal("100.50"), new BigDecimal("50.25"))); + } + + @Test + void amountUtil_multiply() { + assertEquals(new BigDecimal("301.50"), AmountUtil.multiply(new BigDecimal("100.50"), 3)); + assertEquals(new BigDecimal("150.00"), AmountUtil.multiply(new BigDecimal("100.00"), new BigDecimal("1.5"))); + } + + @Test + void amountUtil_divide() { + assertEquals(new BigDecimal("25.00"), AmountUtil.divide(new BigDecimal("100.00"), new BigDecimal("4"))); + assertNull(AmountUtil.divide(new BigDecimal("100"), BigDecimal.ZERO)); + } + + @Test + void amountUtil_isPositive() { + assertTrue(AmountUtil.isPositive(new BigDecimal("100"))); + assertFalse(AmountUtil.isPositive(new BigDecimal("-100"))); + assertFalse(AmountUtil.isPositive(BigDecimal.ZERO)); + } + + // MessageUtil Tests + @Test + void messageUtil_encode_ByteArray() { + String result = MessageUtil.encode("TEST", "Hello World".getBytes()); + assertNotNull(result); + assertTrue(result.startsWith("TEST|11|")); + assertTrue(result.endsWith("Hello World")); + } + + @Test + void messageUtil_encode_NullType() { + assertNull(MessageUtil.encode(null, "payload")); + assertNull(MessageUtil.encode("", "payload")); + } + + @Test + void messageUtil_decode_ValidMessage() { + MessageUtil.MessageFrame frame = MessageUtil.decode("TEST|11|Hello World"); + assertNotNull(frame); + assertEquals("TEST", frame.getType()); + assertEquals(11, frame.getLength()); + assertEquals("Hello World", frame.getPayloadAsString()); + } + + @Test + void messageUtil_decode_InvalidMessage() { + assertNull(MessageUtil.decode(null)); + assertNull(MessageUtil.decode("")); + assertNull(MessageUtil.decode("invalid")); + } + + @Test + void messageUtil_checksum() { + assertEquals(198, MessageUtil.checksum("ABC".getBytes())); + assertEquals(0, MessageUtil.checksum((byte[]) null)); + assertEquals(198, MessageUtil.checksum("ABC")); + } + + @Test + void messageUtil_base64() { + assertEquals("SGVsbG8=", MessageUtil.encodeBase64("Hello".getBytes())); + assertEquals("Hello", new String(MessageUtil.decodeBase64("SGVsbG8="))); + assertNull(MessageUtil.decodeBase64("!!!invalid!!!")); + } + + @Test + void messageUtil_roundTrip() { + String type = "DATA"; + String payload = "Round trip test"; + String encoded = MessageUtil.encode(type, payload); + MessageUtil.MessageFrame decoded = MessageUtil.decode(encoded); + assertNotNull(decoded); + assertEquals(type, decoded.getType()); + assertEquals(payload, decoded.getPayloadAsString()); + } +}