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: []