package net.sourceforge.ganttproject.test.task.event;
import java.util.Calendar;
import biz.ganttproject.core.time.GanttCalendar;
import biz.ganttproject.core.time.impl.GregorianTimeUnitStack;
import net.sourceforge.ganttproject.test.task.TaskTestCase;
import net.sourceforge.ganttproject.task.TaskManager;
import net.sourceforge.ganttproject.task.Task;
import net.sourceforge.ganttproject.task.TaskMutator;
import net.sourceforge.ganttproject.task.event.TaskListenerAdapter;
import net.sourceforge.ganttproject.task.event.TaskScheduleEvent;
/**
* Created by IntelliJ IDEA. User: bard
*/
public class TestTaskScheduleEvent extends TaskTestCase {
public void testTaskScheduleEventIsSendOnTaskEndChange() {
TaskManager taskManager = getTaskManager();
Task task1 = taskManager.createTask();
TaskListenerImpl listener = new TaskListenerImpl(taskManager);
taskManager.addTaskListener(listener);
GanttCalendar taskEnd = task1.getEnd().clone();
taskEnd.add(Calendar.DATE, 1);
TaskMutator mutator = task1.createMutator();
mutator.setEnd(taskEnd);
mutator.commit();
assertTrue("Listener has not been called on task end change", listener
.hasBeenCalled());
}
public void testTaskScheduleEventIsSendOnTaskStartChange() {
TaskManager taskManager = getTaskManager();
Task task1 = taskManager.createTask();
TaskListenerImpl listener = new TaskListenerImpl(taskManager);
taskManager.addTaskListener(listener);
GanttCalendar taskStart = task1.getStart().clone();
taskStart.add(Calendar.DATE, -1);
TaskMutator mutator = task1.createMutator();
mutator.setStart(taskStart);
mutator.commit();
assertTrue("Listener has not been called on task start change",
listener.hasBeenCalled());
}
public void testTaskScheduleEventIsSendOnTaskDurationChange() {
TaskManager taskManager = getTaskManager();
Task task1 = taskManager.createTask();
TaskListenerImpl listener = new TaskListenerImpl(taskManager);
taskManager.addTaskListener(listener);
TaskMutator mutator = task1.createMutator();
mutator.setDuration(taskManager.createLength(GregorianTimeUnitStack.DAY,
5));
mutator.commit();
assertTrue("Listener has not been called on task duration change",
listener.hasBeenCalled());
}
private static class TaskListenerImpl extends TaskListenerAdapter {
private boolean hasBeenCalled;
public TaskListenerImpl(TaskManager taskManager) {
super();
}
@Override
public void taskScheduleChanged(TaskScheduleEvent e) {
hasBeenCalled = true;
}
boolean hasBeenCalled() {
return hasBeenCalled;
}
}
}