blob: 7c160e277555d9afeca246ff20305b07fdc5c66a [file] [log] [blame]
package org.apache.taverna.gis;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.net.URI;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import net.sf.taverna.t2.activities.testutils.ActivityInvoker;
import net.sf.taverna.t2.workflowmodel.OutputPort;
import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityConfigurationException;
import net.sf.taverna.t2.workflowmodel.processor.activity.ActivityInputPort;
import org.junit.Before;
import org.junit.Test;
public class GisActivityTest {
private GisActivityConfigurationBean configBean;
private GisActivity activity = new GisActivity();
@Before
public void makeConfigBean() throws Exception {
configBean = new GisActivityConfigurationBean();
configBean.setProcessIdentifier("something");
configBean
.setOgcServiceUri(URI.create("http://localhost:8080/myEndPoint"));
}
@Test(expected = ActivityConfigurationException.class)
public void invalidConfiguration() throws ActivityConfigurationException {
GisActivityConfigurationBean invalidBean = new GisActivityConfigurationBean();
invalidBean.setProcessIdentifier("invalidExample");
// Should throw ActivityConfigurationException
activity.configure(invalidBean);
}
@Test
public void executeAsynch() throws Exception {
activity.configure(configBean);
Map<String, Object> inputs = new HashMap<String, Object>();
inputs.put("firstInput", "hello");
Map<String, Class<?>> expectedOutputTypes = new HashMap<String, Class<?>>();
expectedOutputTypes.put("simpleOutput", String.class);
expectedOutputTypes.put("moreOutputs", String.class);
Map<String, Object> outputs = ActivityInvoker.invokeAsyncActivity(
activity, inputs, expectedOutputTypes);
assertEquals("Unexpected outputs", 2, outputs.size());
assertEquals("simple", outputs.get("simpleOutput"));
assertEquals(Arrays.asList("Value 1", "Value 2"), outputs
.get("moreOutputs"));
}
@Test
public void reConfiguredActivity() throws Exception {
assertEquals("Unexpected inputs", 0, activity.getInputPorts().size());
assertEquals("Unexpected outputs", 0, activity.getOutputPorts().size());
activity.configure(configBean);
assertEquals("Unexpected inputs", 1, activity.getInputPorts().size());
assertEquals("Unexpected outputs", 2, activity.getOutputPorts().size());
activity.configure(configBean);
// Should not change on reconfigure
assertEquals("Unexpected inputs", 1, activity.getInputPorts().size());
assertEquals("Unexpected outputs", 2, activity.getOutputPorts().size());
}
@Test
public void reConfiguredSpecialPorts() throws Exception {
activity.configure(configBean);
GisActivityConfigurationBean specialBean = new GisActivityConfigurationBean();
specialBean.setProcessIdentifier("specialCase");
specialBean.setOgcServiceUri(URI
.create("http://localhost:8080/myEndPoint"));
activity.configure(specialBean);
// Should now have added the optional ports
assertEquals("Unexpected inputs", 2, activity.getInputPorts().size());
assertEquals("Unexpected outputs", 3, activity.getOutputPorts().size());
}
@Test
public void configureActivity() throws Exception {
Set<String> expectedInputs = new HashSet<String>();
expectedInputs.add("firstInput");
Set<String> expectedOutputs = new HashSet<String>();
expectedOutputs.add("simpleOutput");
expectedOutputs.add("moreOutputs");
activity.configure(configBean);
Set<ActivityInputPort> inputPorts = activity.getInputPorts();
assertEquals(expectedInputs.size(), inputPorts.size());
for (ActivityInputPort inputPort : inputPorts) {
assertTrue("Wrong input : " + inputPort.getName(), expectedInputs
.remove(inputPort.getName()));
}
Set<OutputPort> outputPorts = activity.getOutputPorts();
assertEquals(expectedOutputs.size(), outputPorts.size());
for (OutputPort outputPort : outputPorts) {
assertTrue("Wrong output : " + outputPort.getName(),
expectedOutputs.remove(outputPort.getName()));
}
}
}