blob: 811678e0874b11b395d7b00a24f0b09e4bb0da09 [file] [log] [blame]
package net.sf.taverna.t2.workbench.file.importworkflow;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertSame;
import java.util.List;
import org.junit.Ignore;
import org.junit.Test;
import uk.org.taverna.scufl2.api.core.DataLink;
import uk.org.taverna.scufl2.api.core.Processor;
import uk.org.taverna.scufl2.api.core.Workflow;
import uk.org.taverna.scufl2.api.port.InputProcessorPort;
import uk.org.taverna.scufl2.api.port.InputWorkflowPort;
import uk.org.taverna.scufl2.api.port.SenderPort;
@Ignore
public class TestSimpleMerge extends AbstractTestHelper {
private void checkMergedAbcP(Workflow merged) {
// Check that it has everything from both
assertHasProcessors(merged, "A", "B", "C", "P");
assertHasInputPorts(merged, "in1", "in2", "i");
assertHasOutputPorts(merged, "a", "b", "c", "o");
assertHasDatalinks(merged, "in2->B.inputlist", "in1->A.string1",
"in2->A.string2", "Merge0:Merge0_output->C.inputlist",
"A.output->a", "B.outputlist->b",
"B.outputlist->Merge0:outputlistToMerge0_input0",
"A.output->Merge0:outputToMerge0_input0", "C.outputlist->c",
"i->P.inputlist", "P.outputlist->o");
assertHasConditionals(merged, "A;B");
}
private void checkCopiedFromP(Workflow merged) {
Processor newProcP = findProcessor(merged, "P");
Processor originalProcP = findProcessor(p, "P");
assertNotSame("Did not copy processor P", newProcP, originalProcP);
InputProcessorPort inp = newProcP.getInputPorts().first();
InputWorkflowPort newInI = findInputPort(merged, "i");
assertEquals(0, newInI.getDepth().intValue());
InputWorkflowPort originalInI = findInputPort(p, "i");
assertNotSame("Did not copy port 'i'", originalInI, newInI);
List<DataLink> datalinksTo = scufl2Tools.datalinksTo(inp);
assertEquals(1, datalinksTo.size());
SenderPort source = datalinksTo.get(0).getReceivesFrom();
assertSame("Not linked to new port", source, newInI);
assertNotSame("Still linked to old port", source, originalInI);
}
@Test
public void mergeAbcAndPIntoNew() throws Exception {
Workflow merged = new Workflow();
DataflowMerger merger = new DataflowMerger(merged);
merger.getMergeEdit(abc).doEdit();
assertNotSame(abc, merged);
merger.getMergeEdit(p).doEdit();
// Assert abc and p were not modified
checkAbc();
checkP();
checkMergedAbcP(merged);
checkCopiedFromP(merged);
}
@Test
public void mergePintoAbc() throws Exception {
DataflowMerger merger = new DataflowMerger(abc);
Workflow merged = abc;
merger.getMergeEdit(p).doEdit();
checkMergedAbcP(merged);
checkCopiedFromP(merged);
// Assert P did not change
checkP();
}
@Test
public void mergeAbcintoP() throws Exception {
Workflow merged = p;
DataflowMerger merger = new DataflowMerger(merged);
merger.getMergeEdit(abc).doEdit();
checkMergedAbcP(merged);
// Assert ABC did not change
checkAbc();
}
}