/* * Created on 18.10.2004 */ package net.sourceforge.ganttproject.test.task.calendar; import java.text.DateFormat; import java.util.Locale; import com.google.common.collect.ImmutableList; import biz.ganttproject.core.calendar.CalendarEvent; import biz.ganttproject.core.calendar.GPCalendar; import biz.ganttproject.core.calendar.WeekendCalendarImpl; import biz.ganttproject.core.time.CalendarFactory; import biz.ganttproject.core.time.impl.GregorianTimeUnitStack; import net.sourceforge.ganttproject.TestSetupHelper; import net.sourceforge.ganttproject.task.Task; import net.sourceforge.ganttproject.task.TaskManager; import net.sourceforge.ganttproject.test.task.TaskTestCase; /** * @author bard */ public class TestWeekendCalendar extends TaskTestCase { static { new CalendarFactory() { { setLocaleApi(new LocaleApi() { @Override public Locale getLocale() { return Locale.US; } @Override public DateFormat getShortDateFormat() { return DateFormat.getDateInstance(DateFormat.SHORT, Locale.US); } }); } }; } public void testTaskOverlappingWeekendIsTwoDaysShorter() { Task t = getTaskManager().createTask(); t.setStart(TestSetupHelper.newFriday());// Friday t.setEnd(TestSetupHelper.newTuesday()); // Tuesday assertEquals("Unexpected length of task=" + t + " which overlaps weekend", 2f, t.getDuration().getLength( GregorianTimeUnitStack.DAY), 0.1); } @Override protected TaskManager newTaskManager() { return TestSetupHelper.newTaskManagerBuilder().withCalendar(myWeekendCalendar).build(); } private WeekendCalendarImpl myWeekendCalendar = new WeekendCalendarImpl(); public void testNoWeekendsButHasHolidays() { WeekendCalendarImpl noWeekendsOneHolidayCalendar = new WeekendCalendarImpl(); for (int i=1; i<=7; i++) { noWeekendsOneHolidayCalendar.setWeekDayType(i, GPCalendar.DayType.WORKING); } noWeekendsOneHolidayCalendar.setPublicHolidays(ImmutableList.of( CalendarEvent.newEvent(TestSetupHelper.newMonday().getTime(), false, CalendarEvent.Type.HOLIDAY, null, null))); TaskManager mgr = TestSetupHelper.newTaskManagerBuilder().withCalendar(noWeekendsOneHolidayCalendar).build(); Task t = mgr.createTask(); t.setStart(TestSetupHelper.newFriday()); t.setEnd(TestSetupHelper.newWendesday()); assertEquals(4.0f, t.getDuration().getLength(GregorianTimeUnitStack.DAY)); } }