step8
package simplex.murataku.tddbc;
import org.junit.jupiter.api.Test;
import java.time.LocalDate;
import static org.junit.jupiter.api.Assertions.assertEquals;
class BusinessDateAdjusterTest {
@Test
void testNoAdjust() {
BusinessDateAdjuster adjuster = new BusinessDateAdjuster();
LocalDate date = LocalDate.of(2024, 12, 5); // 木曜日
assertEquals(date, adjuster.adjustDate(date, AdjustmentMethod.NO_ADJUST));
}
@Test
void testPreceding_noHolidays() {
BusinessDateAdjuster adjuster = new BusinessDateAdjuster();
LocalDate date = LocalDate.of(2024, 12, 2); // 月曜日
assertEquals(LocalDate.of(2024, 11, 29), // 金曜日
adjuster.adjustDate(date, AdjustmentMethod.PRECEDING));
}
@Test
void testFollowing_noHolidays() {
BusinessDateAdjuster adjuster = new BusinessDateAdjuster();
LocalDate date = LocalDate.of(2024, 12, 7); // 土曜日
assertEquals(LocalDate.of(2024, 12, 9), // 月曜日
adjuster.adjustDate(date, AdjustmentMethod.FOLLOWING));
}
@Test
void testPreceding_withHolidays() {
BusinessDateAdjuster adjuster = new BusinessDateAdjuster(
LocalDate.of(2024, 11, 29)); // 金曜日が祝日
LocalDate date = LocalDate.of(2024, 12, 2); // 月曜日
assertEquals(LocalDate.of(2024, 11, 28), // 木曜日
adjuster.adjustDate(date, AdjustmentMethod.PRECEDING));
}
@Test
void testFollowing_withHolidays() {
BusinessDateAdjuster adjuster = new BusinessDateAdjuster(
LocalDate.of(2024, 12, 9)); // 月曜日が祝日
LocalDate date = LocalDate.of(2024, 12, 7); // 土曜日
assertEquals(LocalDate.of(2024, 12, 10), // 火曜日
adjuster.adjustDate(date, AdjustmentMethod.FOLLOWING));
}
@Test
void testEdgeCase_weekendAndHoliday() {
BusinessDateAdjuster adjuster = new BusinessDateAdjuster(
LocalDate.of(2024, 12, 23)); // 月曜日が祝日
LocalDate date = LocalDate.of(2024, 12, 22); // 日曜日
assertEquals(LocalDate.of(2024, 12, 24), // 火曜日
adjuster.adjustDate(date, AdjustmentMethod.FOLLOWING));
}
}