package models;
import static org.junit.Assert.*;
import java.awt.Dimension;
import org.junit.Test;
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;
public class ConnectionListTests {
@Test public void construction() {
//assert connectionList
ConnectionList connectionList = new ConnectionList();
assertTrue("connection list empty", connectionList.isEmpty());
assertEquals("connection list empty", 0, connectionList.size());
}
/**
* Testing the add-methods of the ConnectionList
* This only tests the add(connection)-methods
*/
@Test
public void testAddConnection() {
// 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();
Input filter1Input = filterUnit1.getInput(0);
Output filter1Output = filterUnit1.getOutput(0);
UnitElement filterUnit2 = UnitFactoryExt.createAddNoiseUnit();
Input filter2Input = filterUnit2.getInput(0);
Output filter2Output = filterUnit2.getOutput(0);
//assert connectionList
ConnectionList connectionList = new ConnectionList();
assertTrue("connection list empty", connectionList.isEmpty());
assertEquals("connection list empty", 0, connectionList.size());
assertFalse("filter1 input connected with source1",
filter1Input.isConnectedWith(source1Output));
assertFalse("filter1 input connected with source2",
filter1Input.isConnectedWith(source2Output));
Connection conn1 = new Connection(source1Unit, 1, filterUnit1, 1);
// adding first connection
assertTrue("add conn1", connectionList.add(conn1));
assertFalse("connection list first added", connectionList.isEmpty());
assertEquals("connection list first added", 1, connectionList.size());
assertTrue("connectin list contains conn1", connectionList.contains(conn1));
assertTrue("filter1 input connected with source1",
filter1Input.isConnectedWith(source1Output));
assertFalse("filter2 input connected with source2",
filter1Input.isConnectedWith(source2Output));
// adding second connection, this replaces the first
Connection conn2 = new Connection(source2Unit, 1, filterUnit1, 1);
assertTrue("add conn2", connectionList.add(conn2));
assertFalse("connection list first replaced", connectionList.isEmpty());
assertEquals("connection list first replaced", 1, connectionList.size());
assertFalse("connection list contains conn1", connectionList.contains(conn1));
assertTrue("connection list contains conn2", connectionList.contains(conn2));
// assert pins
assertFalse("filter1 input connected with source1",
filter1Input.isConnectedWith(source1Output));
assertTrue("filter1 input connected with source2",
filter1Input.isConnectedWith(source2Output));
// now for illegal connections
// connection connecting output to input on same parent
/*TODO
* Connection conn3 = new Connection(source2Unit, 1, source2Unit, 1);
*
assertFalse("add conn3", connectionList.add(conn3));
assertFalse(connectionList.isEmpty());
assertEquals( 1, connectionList.size());
assertFalse("connection list contains conn3", connectionList.contains(conn1));*/
}
/**
* Testing the add-methods of the ConnectionList
* This only tests the add(connection)-methods
*/
@Test
public void testAddPinPin() {
// 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();
Input filter1Input = filterUnit1.getInput(0);
Output filter1Output = filterUnit1.getOutput(0);
UnitElement filterUnit2 = UnitFactoryExt.createAddNoiseUnit();
Input filter2Input = filterUnit2.getInput(0);
Output filter2Output = filterUnit2.getOutput(0);
//assert connectionList
ConnectionList connectionList = new ConnectionList();
assertTrue("connection list empty", connectionList.isEmpty());
assertEquals("connection list empty", 0, connectionList.size());
// assert pins
assertFalse("filter1 input connected with source1",
filter1Input.isConnectedWith(source1Output));
assertFalse("filter1 input connected with source2",
filter1Input.isConnectedWith(source2Output));
// adding first connection
assertTrue("add conn1", connectionList.add(source1Output, filter1Input));
assertFalse("connection list first added", connectionList.isEmpty());
assertEquals("connection list first added", 1, connectionList.size());
// assert pins
assertTrue("filter1 input connected with source1",
filter1Input.isConnectedWith(source1Output));
assertFalse("filter1 input connected with source2",
filter1Input.isConnectedWith(source2Output));
// adding second connection, this replaces the first
assertTrue("add conn2", connectionList.add(source2Output, filter1Input));
assertFalse("connection list first replaced", connectionList.isEmpty());
assertEquals("connection list first replaced", 1, connectionList.size());
// assert pins
assertFalse("filter1 input connected with source1",
filter1Input.isConnectedWith(source1Output));
assertTrue("filter1 input connected with source2",
filter1Input.isConnectedWith(source2Output));
// now for illegal connections
// TODO ...
}
public void testContains() {
// 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();
Input filter1Input = filterUnit1.getInput(0);
Output filter1Output = filterUnit1.getOutput(0);
UnitElement filterUnit2 = UnitFactoryExt.createAddNoiseUnit();
Input filter2Input = filterUnit2.getInput(0);
Output filter2Output = filterUnit2.getOutput(0);
ConnectionList connectionList = new ConnectionList();
Connection conn2 = new Connection(source1Output, filter1Input);
assertFalse(connectionList.contains(conn2));
assertFalse(connectionList.containsConnection(source1Output, filter1Input));
assertFalse(connectionList.containsConnection(filter1Input, source1Output));
assertFalse(connectionList.containsConnection(source1Output, filter2Input));
assertTrue("add conn2", connectionList.add(conn2));
assertTrue(connectionList.contains(conn2));
assertTrue(connectionList.containsConnection(source1Output, filter1Input));
assertFalse(connectionList.containsConnection(source1Output, filter2Input));
}
public void testLoopConnection() {
UnitElement filter1 = UnitFactoryExt.createAddNoiseUnit();
UnitElement filter2 = UnitFactoryExt.createAddNoiseUnit();
UnitElement filter3 = UnitFactoryExt.createAddNoiseUnit();
ConnectionList connectionList = new ConnectionList();
assertTrue("create conn f1 to f2", connectionList.add(filter1, 1, filter2, 1));
assertTrue("create conn f1 to f2", connectionList.add(filter1.getOutput(0), filter2.getInput(0)));
assertTrue("create conn f2 to f3", connectionList.add(filter2, 1, filter3, 1));
// try to create loops
assertFalse("create conn f3 to f1", connectionList.add(filter3, 1, filter1, 1));
assertFalse("create conn f3 to f1", connectionList.add(filter3.getOutput(0), filter1.getInput(0)));
}
public void testRemoveConnection() {
UnitElement filter1 = UnitFactoryExt.createAddNoiseUnit();
UnitElement filter2 = UnitFactoryExt.createAddNoiseUnit();
UnitElement filter3 = UnitFactoryExt.createAddNoiseUnit();
ConnectionList connectionList = new ConnectionList();
assertTrue("add conn1", connectionList.add(filter1, 1, filter2, 1));
assertTrue("add conn2", connectionList.add(filter2, 1, filter3, 1));
assertFalse("filter1 inputs ", filter1.hasInputsConnected());
assertTrue("filter2 inputs ", filter2.hasInputsConnected());
assertTrue("filter3 inputs ", filter3.hasInputsConnected());
assertTrue("filter1 outputs", filter1.hasOutputsConnected());
assertTrue("filter2 outputs", filter2.hasOutputsConnected());
assertFalse("filter3 outputs", filter3.hasOutputsConnected());
connectionList.remove(1);
assertFalse("filter1 inputs ", filter1.hasInputsConnected());
assertTrue("filter2 inputs ", filter2.hasInputsConnected());
assertFalse("filter3 inputs ", filter3.hasInputsConnected());
assertTrue("filter1 outputs", filter1.hasOutputsConnected());
assertFalse("filter2 outputs", filter2.hasOutputsConnected());
assertFalse("filter3 outputs", filter3.hasOutputsConnected());
}
}