14 타입변환

p251 - src/main/java/mvc/error/StringToDateConverter

public class StringToDateConverter implements Converter<String, Date> {
    private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

    @Override
    public Date convert(String source) {
        try {
            return dateFormat.parse(source);
        } catch (ParseException e) {
            throw new IllegalArgumentException("Invalid date format");
        }
    }
}

p252 - src/test/java/mvc/error/StringToDateConverterTest

class StringToDateConverterTest {

    private StringToDateConverter converter;
    private SimpleDateFormat dateFormat;

    @BeforeEach
    void setUp() {
        converter = new StringToDateConverter();
        dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    }

    @Test
    void convert_ValidDateString_ShouldReturnDate() {
        // Given
        String validDateString = "2023-10-05";

        // When
        Date result = converter.convert(validDateString);

        // Then
        assertNotNull(result);
        assertEquals("2023-10-05", dateFormat.format(result));
    }

    @Test
    void convert_InvalidDateString_ShouldThrowException() {
        // Given
        String invalidDateString = "invalid-date";

        // When & Then
        IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> {
            converter.convert(invalidDateString);
        });

        assertTrue(exception.getMessage().contains("Invalid date format"));
    }

    @Test
    void convert_EmptyDateString_ShouldThrowException() {
        // Given
        String emptyDateString = "";

        // When & Then
        IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> {
            converter.convert(emptyDateString);
        });

        assertTrue(exception.getMessage().contains("Invalid date format"));
    }
}

Last updated