package org.drugis.common.threading.status;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import org.drugis.common.threading.activity.ActivityModel;
import org.drugis.common.threading.activity.ActivityTask;
import org.drugis.common.threading.activity.DirectTransition;
import org.drugis.common.threading.activity.MockTask;
import org.drugis.common.threading.activity.Transition;
import org.junit.Test;
import com.jgoodies.binding.value.ValueModel;
public class TaskStatusTest {
@Test
public void testTaskTerminatedModel() {
MockTask task = new MockTask();
ValueModel taskTerminated = new TaskTerminatedModel(task);
assertFalse((Boolean)taskTerminated.getValue());
task.finish();
assertTrue((Boolean)taskTerminated.getValue());
task.abort();
assertTrue((Boolean)taskTerminated.getValue());
}
@Test(expected = IllegalAccessError.class)
public void testTaskStartableSetValue() throws IllegalAccessError {
MockTask task = new MockTask();
ValueModel taskStartable = new TaskStartableModel(task);
taskStartable.setValue(null);
}
@Test(expected = IllegalAccessError.class)
public void testTaskFinishedSetValue() throws IllegalAccessError {
MockTask task = new MockTask();
ValueModel taskFinished = new TaskTerminatedModel(task);
taskFinished.setValue(null);
}
@Test
public void testTaskStartable() {
MockTask task = new MockTask();
ValueModel taskStartable = new TaskStartableModel(task);
assertTrue((Boolean)taskStartable.getValue());
task.finish();
assertFalse((Boolean)taskStartable.getValue());
}
@Test
public void testTaskInPhase() {
MockTask source = new MockTask();
source.setName("source");
MockTask target = new MockTask();
target.setName("target");
List<Transition> transitions = new ArrayList<Transition>();
transitions.add(new DirectTransition(source,target));
ActivityModel model = new ActivityModel(source, target, transitions);
ActivityTask task = new ActivityTask(model);
ValueModel inPhase = new ActivityTaskInPhase(task, target);
source.start();
assertFalse((Boolean)inPhase.getValue());
source.finish();
target.start();
assertTrue((Boolean)inPhase.getValue());
}
}