Add parser tests
diff --git a/taverna-scufl2-cwl/src/test/java/org/apache/taverna/scufl2/cwl/TestParser.java b/taverna-scufl2-cwl/src/test/java/org/apache/taverna/scufl2/cwl/TestParser.java
index 83c48e1..23b9533 100644
--- a/taverna-scufl2-cwl/src/test/java/org/apache/taverna/scufl2/cwl/TestParser.java
+++ b/taverna-scufl2-cwl/src/test/java/org/apache/taverna/scufl2/cwl/TestParser.java
@@ -3,6 +3,7 @@
import java.util.*;
+import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
@@ -13,41 +14,82 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
+import org.apache.taverna.scufl2.api.core.Workflow;
+import org.apache.taverna.scufl2.api.core.Processor;
+import org.apache.taverna.scufl2.api.core.DataLink;
+
+import org.apache.taverna.scufl2.api.common.NamedSet;
+
import org.apache.taverna.scufl2.api.port.InputWorkflowPort;
import org.apache.taverna.scufl2.api.port.OutputWorkflowPort;
+import org.apache.taverna.scufl2.api.port.InputProcessorPort;
public class TestParser {
- private static final String SIMPLE_STRING_INPUT = "/simple_string_input.cwl";
- private static final String INT_INPUT = "/int_input.cwl";
+ private static final String HELLO_WORLD_CWL = "/hello_world.cwl";
private static JsonNode cwlFile;
+ private WorkflowParser parser;
+ private Workflow workflow;
- @Test
- public void testStringInput() throws Exception {
+ @Before
+ public void initialize() {
Yaml reader = new Yaml();
ObjectMapper mapper = new ObjectMapper();
- cwlFile = mapper.valueToTree(reader.load(TestParser.class.getResourceAsStream(SIMPLE_STRING_INPUT)));
+ cwlFile = mapper.valueToTree(reader.load(TestParser.class.getResourceAsStream(HELLO_WORLD_CWL)));
System.out.println(cwlFile);
- Parser parser = new Parser(cwlFile);
+ this.parser = new WorkflowParser(cwlFile);
- Set<InputWorkflowPort> result = parser.parseInputs();
- for(InputWorkflowPort port: result) {
- System.out.println(port.getName());
- }
- ArrayList<InputWorkflowPort> inputs = new ArrayList<>(result);
- assertEquals(inputs.get(0).getName(), "example_string");
+ this.workflow = parser.buildWorkflow();
+ }
- Set<OutputWorkflowPort> result2 = parser.parseOutputs();
- for(OutputWorkflowPort port: result2) {
- System.out.println(port.getName());
- }
- System.out.println("Showing steps:");
+ @Test
+ public void testParseInputs() throws Exception {
- Set<Step> steps = parser.parseSteps();
- for(Step step: steps) {
- System.out.println(step);
- }
+ NamedSet<InputWorkflowPort> workflowInputs = workflow.getInputPorts();
+ NamedSet<InputWorkflowPort> expectedInputs = new NamedSet<>();
+ expectedInputs.add(new InputWorkflowPort(workflow, "name"));
+
+ assertEquals(expectedInputs, workflowInputs);
+ }
+
+ @Test
+ public void testParseOutputs() throws Exception {
+
+ NamedSet<OutputWorkflowPort> workflowOutputs = workflow.getOutputPorts();
+ NamedSet<OutputWorkflowPort> expectedOutputs = new NamedSet<>();
+
+ assertEquals(expectedOutputs, workflowOutputs);
+ }
+
+ @Test
+ public void testParseProcessors() throws Exception {
+
+ NamedSet<Processor> workflowProcessors = workflow.getProcessors();
+ NamedSet<Processor> expectedProcessors = new NamedSet<>();
+ expectedProcessors.add(new Processor(workflow, "step1"));
+
+ assertEquals(expectedProcessors, workflowProcessors);
+ }
+
+ @Test
+ public void testParseDataLinks() throws Exception {
+
+ Set<DataLink> workflowDataLinks = workflow.getDataLinks();
+ Set<DataLink> expectedDataLinks = new HashSet<>();
+ Set<Processor> processorSet = workflow.getProcessors();
+ // processorSet has one processor
+ Processor processor = processorSet.iterator().next();
+
+ expectedDataLinks.add(
+ new DataLink(
+ workflow,
+ new InputWorkflowPort(workflow, "name"),
+ new InputProcessorPort(processor, "text")
+ )
+ );
+
+ assertEquals(expectedDataLinks, workflowDataLinks);
}
}
diff --git a/taverna-scufl2-cwl/src/test/resources/hello_world.cwl b/taverna-scufl2-cwl/src/test/resources/hello_world.cwl
new file mode 100644
index 0000000..d716812
--- /dev/null
+++ b/taverna-scufl2-cwl/src/test/resources/hello_world.cwl
@@ -0,0 +1,18 @@
+#!/usr/bin/env cwl-runner
+cwlVersion: v1.0
+class: Workflow
+
+inputs:
+ name: string
+
+outputs: []
+
+steps:
+ step1:
+ run: example.cwl
+
+ inputs:
+ - id: text
+ source: "#x/name"
+
+ outputs: []