package models;
import java.awt.Dimension;
import de.danielsenff.imageflow.imagej.MacroFlowRunner;
import de.danielsenff.imageflow.models.connection.Connection;
import de.danielsenff.imageflow.models.connection.ConnectionList;
import de.danielsenff.imageflow.models.unit.UnitElement;
import de.danielsenff.imageflow.models.unit.UnitList;
import org.junit.Test;
import static org.junit.Assert.*;
public class MacroFlowRunnerTests {
@Test public void testSortAlgorithm1() {
UnitList units = buildSampleWorkflow();
UnitElement source1 = (UnitElement) units.get(0);
UnitElement filter1 = (UnitElement) units.get(1);
UnitElement filter2 = (UnitElement) units.get(2);
UnitElement filter3 = (UnitElement) units.get(3);
UnitElement source2 = (UnitElement) units.get(4);
UnitList sortedList = MacroFlowRunner.sortList(units);
assertEquals("source on correct position 0", source1, sortedList.get(0));
assertEquals("source on correct position 1", filter1, sortedList.get(1));
assertEquals("source on correct position 2", filter2, sortedList.get(2));
}
private UnitList buildSampleWorkflow() {
UnitList unitList = new UnitList();
UnitElement source1 = UnitFactoryExt.createBackgroundUnit(new Dimension(10, 10));
UnitElement filter1 = UnitFactoryExt.createAddNoiseUnit();
UnitElement filter2 = UnitFactoryExt.createFindEdgesUnit();
UnitElement filter3 = UnitFactoryExt.createGaussianBlurUnit();
UnitElement source2 = UnitFactoryExt.createBackgroundUnit(new Dimension(10,0));
unitList.add(source1);
unitList.add(source2);
unitList.add(filter1);
unitList.add(filter2);
unitList.add(filter3);
assertEquals(5, unitList.size());
assertFalse(unitList.hasUnitAsDisplay());
filter2.setDisplay(true);
assertTrue(unitList.hasUnitAsDisplay());
ConnectionList connList = unitList.getConnections();
connList.add(new Connection(source1, 1, filter1, 1));
connList.add(new Connection(filter1, 1, filter2, 1));
assertTrue("branch has display units", source1.hasDisplayBranch());
assertTrue("branch has display units", filter1.hasDisplayBranch());
connList.add(new Connection(source2, 1, filter3, 1));
assertFalse("branch has display", source2.hasDisplayBranch());
assertEquals(5, unitList.size());
return unitList;
}
}