--- /dev/null
+/**\r
+ * Copyright (c) 2017 ZTE Corporation.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the Apache License, Version 2.0\r
+ * and the Eclipse Public License v1.0 which both accompany this distribution,\r
+ * and are available at http://www.eclipse.org/legal/epl-v10.html\r
+ * and http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Contributors:\r
+ * ZTE - initial API and implementation and/or initial documentation\r
+ */\r
+package org.onap.sdc.workflowdesigner.parser;\r
+\r
+import static org.junit.Assert.assertEquals;\r
+import static org.junit.Assert.fail;\r
+\r
+import java.io.IOException;\r
+import java.net.MalformedURLException;\r
+import java.net.URI;\r
+import java.nio.file.Paths;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+\r
+import org.junit.Test;\r
+import org.onap.sdc.workflowdesigner.model.Element;\r
+import org.onap.sdc.workflowdesigner.model.EndEvent;\r
+import org.onap.sdc.workflowdesigner.model.Process;\r
+import org.onap.sdc.workflowdesigner.model.SequenceFlow;\r
+import org.onap.sdc.workflowdesigner.model.StartEvent;\r
+\r
+import com.fasterxml.jackson.core.JsonParseException;\r
+import com.fasterxml.jackson.databind.JsonMappingException;\r
+\r
+public class Bpmn4ToscaJsonParserTest {\r
+\r
+ private static String RESOURCES_DIR = "src/test/resources/workflow";\r
+ protected static String PROCESS_NAME = "test1";\r
+\r
+ @Test\r
+ public void parseTest() throws JsonParseException, JsonMappingException, MalformedURLException, IOException {\r
+ Bpmn4ToscaJsonParser parser = new Bpmn4ToscaJsonParser();\r
+ URI srcUri = Paths.get(RESOURCES_DIR, "workflow.json").toUri();\r
+ Process actualProcess = parser.parse(PROCESS_NAME, srcUri);\r
+ Process expectedProcess = createReferenceProcess();\r
+\r
+ assertElements(expectedProcess.getElementList(), actualProcess.getElementList());\r
+ assertSequenceFlows(expectedProcess.getSequenceFlowList(), actualProcess.getSequenceFlowList());\r
+ }\r
+\r
+ private static void assertElements(List<Element> expectedElementList, List<Element> actualElementList) {\r
+ assertEquals(expectedElementList.size(), actualElementList.size());\r
+\r
+ for (Iterator<Element> iterator = expectedElementList.iterator(); iterator.hasNext();) {\r
+ Element expectedElement = (Element) iterator.next();\r
+ Element actualElement = getElementById(expectedElement.getId(), actualElementList);\r
+ if (actualElement != null) {\r
+ assertElement(expectedElement, actualElement);\r
+ } else {\r
+ fail("Element with id " + expectedElement.getId() + " could not be found");\r
+ }\r
+ }\r
+ }\r
+\r
+ private static Element getElementById(String id, List<Element> actualElementList) {\r
+ Iterator<Element> iter = actualElementList.iterator();\r
+ while (iter.hasNext()) {\r
+ Element element = (Element) iter.next();\r
+ if (element.getId().equals(id)) {\r
+ return element;\r
+ }\r
+ }\r
+ return null;\r
+ }\r
+\r
+ public static void assertElement(Element expected, Element actual) {\r
+ assertEquals("element: id ", expected.getId(), actual.getId());\r
+ assertEquals("element: name ", expected.getName(), actual.getName());\r
+ }\r
+\r
+ public static void assertSequenceFlows(List<SequenceFlow> expectedSequenceList,\r
+ List<SequenceFlow> actualSequenceFlowList) {\r
+ assertEquals(expectedSequenceList.size(), actualSequenceFlowList.size());\r
+\r
+ for (Iterator<SequenceFlow> iterator = expectedSequenceList.iterator(); iterator.hasNext();) {\r
+ SequenceFlow expectedElement = (SequenceFlow) iterator.next();\r
+ SequenceFlow actualElement = getSequenceById(expectedElement.getSourceRef(), expectedElement.getTargetRef(),\r
+ actualSequenceFlowList);\r
+ if (actualElement != null) {\r
+ assertLink(expectedElement, actualElement);\r
+ } else {\r
+ fail("Element with id " + expectedElement.getId() + " could not be found");\r
+ }\r
+ }\r
+ }\r
+\r
+ private static SequenceFlow getSequenceById(String sourceRef, String targetRef,\r
+ List<SequenceFlow> actualSequenceFlowList) {\r
+ Iterator<SequenceFlow> iter = actualSequenceFlowList.iterator();\r
+ while (iter.hasNext()) {\r
+ SequenceFlow element = (SequenceFlow) iter.next();\r
+ if (element.getSourceRef().equals(sourceRef) && element.getTargetRef().equals(targetRef)) {\r
+ return element;\r
+ }\r
+ }\r
+ return null;\r
+ }\r
+\r
+ public static void assertLink(SequenceFlow expectedLink, SequenceFlow actualLink) {\r
+ assertEquals("Link source: id", expectedLink.getSourceRef(), actualLink.getSourceRef());\r
+ assertEquals("Link target :id", expectedLink.getTargetRef(), actualLink.getTargetRef());\r
+ }\r
+\r
+ private static Process createReferenceProcess() {\r
+ Process process = new Process(PROCESS_NAME);\r
+\r
+ StartEvent startEvent = new StartEvent();\r
+ startEvent.setDocumentation("");\r
+ startEvent.setId("node0");\r
+ startEvent.setName("startEvent");\r
+ process.getElementList().add(startEvent);\r
+\r
+ EndEvent endEvent = new EndEvent();\r
+ endEvent.setDocumentation("");\r
+ endEvent.setId("node1");\r
+ endEvent.setName("endEvent");\r
+ process.getElementList().add(endEvent);\r
+\r
+ SequenceFlow flow2 = new SequenceFlow();\r
+ flow2.setId("node0node1");\r
+ flow2.setSourceRef("node0");\r
+ flow2.setTargetRef("node1");\r
+ process.getSequenceFlowList().add(flow2);\r
+\r
+ return process;\r
+ }\r
+\r
+}\r