@Test public void calendarDateAdd3() { CalendarDateAdd dateAdd = new CalendarDateAdd(); dateAdd.addWorkingWeekDays(); dateAdd.getExcludePeriods().add(new DayRange(2011, 4, 4, dateAdd.getTimeCalendar())); dateAdd.getWorkingHours().add(new HourRangeInDay(new Timepart(8, 30), new Timepart(12))); dateAdd.getWorkingHours().add(new HourRangeInDay(new Timepart(13, 30), new Timepart(18))); DateTime start = new DateTime(2011, 4, 1, 9, 0); assertThat(dateAdd.add(start, Durations.hours(3))) .isEqualTo(new DateTime(2011, 4, 1, 13, 30, 0)); assertThat(dateAdd.add(start, Durations.hours(4))) .isEqualTo(new DateTime(2011, 4, 1, 14, 30, 0)); assertThat(dateAdd.add(start, Durations.hours(8))).isEqualTo(new DateTime(2011, 4, 5, 9, 0, 0)); }
@Test public void calendarDateAddSeekBoundaryMode() { CalendarDateAdd dateAdd = new CalendarDateAdd(); dateAdd.addWorkingWeekDays(); dateAdd.getExcludePeriods().add(new DayRange(2011, 4, 4, dateAdd.getTimeCalendar())); dateAdd.getWorkingHours().add(new HourRangeInDay(8, 18)); DateTime start = new DateTime(2011, 4, 1, 9, 0); assertThat(dateAdd.add(start, Durations.hours(29), SeekBoundaryMode.Fill)) .isEqualTo(new DateTime(2011, 4, 6, 18, 0, 0)); assertThat(dateAdd.add(start, Durations.hours(29), SeekBoundaryMode.Next)) .isEqualTo(new DateTime(2011, 4, 7, 8, 0, 0)); assertThat(dateAdd.add(start, Durations.hours(29))) .isEqualTo(new DateTime(2011, 4, 7, 8, 0, 0)); }