/*
* Created on 12.11.2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package net.sourceforge.ganttproject.test.task.dependency;
import net.sourceforge.ganttproject.task.Task;
import net.sourceforge.ganttproject.task.dependency.TaskDependency;
import net.sourceforge.ganttproject.task.dependency.TaskDependencyException;
import net.sourceforge.ganttproject.test.task.TaskTestCase;
public class TestDependencyCycle extends TaskTestCase {
public void testSimpleCycle() throws Exception {
Task dependant = getTaskManager().createTask();
Task dependee = getTaskManager().createTask();
getTaskManager().getDependencyCollection().createDependency(dependant, dependee);
assertIsLooping(dependee, dependant);
}
public void testLoopingDependencyTargetedAtSupertask() throws Exception {
Task supertask = getTaskManager().createTask(); supertask.setName("supertask");
Task nestedTask = getTaskManager().createTask(); nestedTask.setName("nestedtask");
nestedTask.move(supertask);
Task dependantTask = getTaskManager().createTask();
dependantTask.setName("dependanttask");
getTaskManager().getDependencyCollection().createDependency(dependantTask, nestedTask);
assertIsLooping(supertask, dependantTask);
}
public void testDependencyTargetedToNestedTask() throws Exception {
Task supertask = getTaskManager().createTask();
Task nestedTask = getTaskManager().createTask();
nestedTask.move(supertask);
assertIsLooping(supertask, nestedTask);
}
private void assertIsLooping(Task dependant, Task dependee) {
boolean loopCreated = true;
try {
TaskDependency loopingDependency = getTaskManager().getDependencyCollection().createDependency(dependant, dependee);
assertNotNull("Either exception is thrown, or result is not null", loopingDependency);
}
catch (TaskDependencyException e) {
// An exception is thrown if the loop is prevented/detected (which is good behavior)
loopCreated = false;
}
assertFalse("Dependency loop has been successfully created...", loopCreated);
}
}