/**
*
*/
package models;
import java.awt.Dimension;
import org.junit.Test;
import static org.junit.Assert.*;
import de.danielsenff.imageflow.models.connection.Connection;
import de.danielsenff.imageflow.models.connection.ConnectionList;
import de.danielsenff.imageflow.models.connection.Input;
import de.danielsenff.imageflow.models.connection.Output;
import de.danielsenff.imageflow.models.unit.UnitElement;
/**
* @author danielsenff
*
*/
public class InputTests {
@Test public void testImageTitle() {
// image title of style "Unit_1_Output_1"
// test output-only
UnitElement sourceUnit = UnitFactoryExt.createBackgroundUnit(new Dimension(12, 12));
// test input/output case
UnitElement filterUnit1 = UnitFactoryExt.createAddNoiseUnit();
UnitElement filterUnit2 = UnitFactoryExt.createAddNoiseUnit();
Input filter1Input = filterUnit1.getInput(0);
Input filter2Input = filterUnit2.getInput(0);
Connection conn1 = new Connection(sourceUnit, 1, filterUnit1, 1);
Connection conn2 = new Connection(sourceUnit, 1, filterUnit2, 1);
ConnectionList connList= new ConnectionList();
assertTrue(connList.add(conn1));
assertTrue(connList.add(conn2));
// the imagetitle is constructed from the unit and pin the
// connection comes from and the
assertEquals("imagetitle for input 1 at unit 2",
"Unit_"+sourceUnit.getNodeID()+"_Output_1", filter1Input.getImageTitle());
assertEquals("imagetitle for input 1 at unit 3",
"Unit_"+sourceUnit.getNodeID()+"_Output_1", filter2Input.getImageTitle());
}
@Test public void testIsConnected() {
// test output-only
UnitElement sourceUnit = UnitFactoryExt.createBackgroundUnit(new Dimension(12, 12));
// test input/output case
UnitElement filterUnit1 = UnitFactoryExt.createAddNoiseUnit();
UnitElement filterUnit2 = UnitFactoryExt.createAddNoiseUnit();
Input filterInput = filterUnit1.getInput(0);
// test beforehand
assertFalse("input not connected", filterInput.isConnected());
Connection conn = new Connection(sourceUnit, 1, filterUnit1, 1);
ConnectionList connList = new ConnectionList();
assertTrue(connList.add(conn));
// test after connecting
assertTrue("input connected", filterInput.isConnected());
}
@Test public void testIsConnectedWith() {
// test output-only
UnitElement source1Unit = UnitFactoryExt.createBackgroundUnit(new Dimension(12, 12));
Output source1Output = source1Unit.getOutput(0);
UnitElement source2Unit = UnitFactoryExt.createBackgroundUnit(new Dimension(12, 12));
Output source2Output = source2Unit.getOutput(0);
// test input/output case
UnitElement filterUnit1 = UnitFactoryExt.createAddNoiseUnit();
UnitElement filterUnit2 = UnitFactoryExt.createAddNoiseUnit();
Input filterInput = filterUnit1.getInput(0);
// test beforehand
assertFalse("input not connected with source1Output",
filterInput.isConnectedWith(source1Output));
assertFalse("input not connected with source2Output",
filterInput.isConnectedWith(source2Output));
Connection conn = new Connection(source1Unit, 1, filterUnit1, 1);
ConnectionList connList = new ConnectionList();
connList.add(conn);
// test after connecting
assertTrue("input not connected with source1Output",
filterInput.isConnectedWith(source1Output));
assertFalse("input not connected with source2Output",
filterInput.isConnectedWith(source2Output));
}
@Test public void testIsDisconnected() {
// test output-only
UnitElement sourceUnit = UnitFactoryExt.createBackgroundUnit(new Dimension(12, 12));
// test input/output case
UnitElement filterUnit1 = UnitFactoryExt.createAddNoiseUnit();
UnitElement filterUnit2 = UnitFactoryExt.createAddNoiseUnit();
Input filterInput = filterUnit1.getInput(0);
ConnectionList connList = new ConnectionList();
// test after connecting
Connection conn = new Connection(sourceUnit, 1, filterUnit1, 1);
assertTrue("add conn 1", connList.add(conn));
assertTrue("input connected", filterInput.isConnected());
assertTrue("conn connected", conn.isConnected());
assertNotNull(connList.remove(conn));
// test after removing connection ie disconnecting
assertFalse("input disconnected", filterInput.isConnected());
assertFalse("conn connected", conn.isConnected());
}
@Test public void testIsRequiredInput() {
UnitElement source = UnitFactoryExt.createBackgroundUnit(new Dimension(10,10));
UnitElement unit = UnitFactoryExt.createImageCalculatorUnit();
Input imageCalcInput1 = unit.getInput(0);
Input imageCalcInput2 = unit.getInput(1);
assertTrue(imageCalcInput1.isRequired());
assertTrue(imageCalcInput2.isRequired());
imageCalcInput2.setRequiredInput(false);
assertFalse(imageCalcInput2.isRequired());
// are connected?
assertFalse(imageCalcInput1.isConnected());
assertFalse(imageCalcInput2.isConnected());
Connection conn2 = new Connection(source, 1, unit, 2 );
conn2.connect();
assertFalse(imageCalcInput1.isConnected());
assertTrue(imageCalcInput2.isConnected());
assertFalse("required inputs connected", unit.hasRequiredInputsConnected());
Connection conn1 = new Connection(source, 1, unit, 1 );
conn1.connect();
assertTrue(imageCalcInput1.isConnected());
assertTrue(imageCalcInput2.isConnected());
assertTrue("required inputs connected", unit.hasRequiredInputsConnected());
}
@Test public void testUnitConnectedInOutputBranch() {
UnitElement unit1 = UnitFactoryExt.createAddNoiseUnit();
UnitElement unit2 = UnitFactoryExt.createAddNoiseUnit();
UnitElement unit3 = UnitFactoryExt.createAddNoiseUnit();
Connection conn1 = new Connection(unit1, 1, unit2, 1);
conn1.connect();
assertTrue(conn1.isConnected());
Input input2 = unit2.getInput(0);
assertFalse("input2 knows unit1", input2.isConnectedInOutputBranch(unit1));
assertFalse("input2 knows unit2", input2.isConnectedInOutputBranch(unit2));
assertFalse("input2 knows unit3", input2.isConnectedInOutputBranch(unit3));
Connection conn2 = new Connection(unit2, 1, unit3, 1);
conn2.connect();
Input input3 = unit3.getInput(0);
assertFalse("input3 knows unit1", input3.isConnectedInOutputBranch(unit1));
assertFalse("input3 knows unit2", input3.isConnectedInOutputBranch(unit2));
assertFalse("input3 knows unit3", input3.isConnectedInOutputBranch(unit3));
assertTrue("input2 knows unit3", input2.isConnectedInOutputBranch(unit3));
}
@Test public void testUnitConnectedInInputBranch() {
UnitElement unit1 = UnitFactoryExt.createAddNoiseUnit();
UnitElement unit2 = UnitFactoryExt.createAddNoiseUnit();
UnitElement unit3 = UnitFactoryExt.createAddNoiseUnit();
Connection conn1 = new Connection(unit1, 1, unit2, 1);
conn1.connect();
assertTrue(conn1.isConnected());
Input input2 = unit2.getInput(0);
assertTrue("input2 knows unit1", input2.isConnectedInInputBranch(unit1));
assertFalse("input2 knows unit2", input2.isConnectedInInputBranch(unit2));
assertFalse("input2 knows unit3", input2.isConnectedInInputBranch(unit3));
Connection conn2 = new Connection(unit2, 1, unit3, 1);
conn2.connect();
Input input3 = unit3.getInput(0);
assertTrue("input3 knows unit1", input3.isConnectedInInputBranch(unit1));
assertTrue("input3 knows unit2", input3.isConnectedInInputBranch(unit2));
assertFalse("input3 knows unit1", input3.isConnectedInInputBranch(unit3));
assertFalse("input2 knows unit3", input2.isConnectedInInputBranch(unit3));
}
}