2 * Copyright (c) 2017-2018 ZTE Corporation.
\r
3 * All rights reserved. This program and the accompanying materials
\r
4 * are made available under the Apache License, Version 2.0
\r
5 * and the Eclipse Public License v1.0 which both accompany this distribution,
\r
6 * and are available at http://www.eclipse.org/legal/epl-v10.html
\r
7 * and http://www.apache.org/licenses/LICENSE-2.0
\r
10 * ZTE - initial API and implementation and/or initial documentation
\r
12 package org.onap.sdc.workflowdesigner.parser;
\r
14 import static org.junit.Assert.assertEquals;
\r
15 import static org.junit.Assert.fail;
\r
17 import java.io.IOException;
\r
18 import java.net.MalformedURLException;
\r
19 import java.net.URI;
\r
20 import java.nio.file.Paths;
\r
21 import java.util.Iterator;
\r
22 import java.util.List;
\r
24 import org.junit.Test;
\r
25 import org.onap.sdc.workflowdesigner.model.Element;
\r
26 import org.onap.sdc.workflowdesigner.model.Position;
\r
27 import org.onap.sdc.workflowdesigner.model.Process;
\r
28 import org.onap.sdc.workflowdesigner.model.ScriptTask;
\r
29 import org.onap.sdc.workflowdesigner.model.SequenceFlow;
\r
31 import com.fasterxml.jackson.core.JsonParseException;
\r
32 import com.fasterxml.jackson.databind.JsonMappingException;
\r
34 public class Bpmn4ToscaJsonParserTest {
\r
36 private static String RESOURCES_DIR = "src/test/resources/workflow";
\r
37 protected static String PROCESS_NAME = "test1";
\r
40 public void parseTest() throws JsonParseException, JsonMappingException, MalformedURLException, IOException {
\r
41 Bpmn4ToscaJsonParser parser = new Bpmn4ToscaJsonParser();
\r
42 URI srcUri = Paths.get(RESOURCES_DIR, "workflow.json").toUri();
\r
43 Process actualProcess = parser.parse(PROCESS_NAME, srcUri);
\r
44 Process expectedProcess = createReferenceProcess();
\r
46 assertElements(expectedProcess.getElementList(), actualProcess.getElementList());
\r
47 assertSequenceFlows(expectedProcess.getSequenceFlowList(), actualProcess.getSequenceFlowList());
\r
50 private static void assertElements(List<Element> expectedElementList, List<Element> actualElementList) {
\r
51 assertEquals(expectedElementList.size(), actualElementList.size());
\r
53 for (Iterator<Element> iterator = expectedElementList.iterator(); iterator.hasNext();) {
\r
54 Element expectedElement = (Element) iterator.next();
\r
55 Element actualElement = getElementById(expectedElement.getId(), actualElementList);
\r
56 if (actualElement != null) {
\r
57 assertElement(expectedElement, actualElement);
\r
59 fail("Element with id " + expectedElement.getId() + " could not be found");
\r
64 private static Element getElementById(String id, List<Element> actualElementList) {
\r
65 Iterator<Element> iter = actualElementList.iterator();
\r
66 while (iter.hasNext()) {
\r
67 Element element = (Element) iter.next();
\r
68 if (element.getId().equals(id)) {
\r
75 public static void assertElement(Element expected, Element actual) {
\r
76 assertEquals("element: id ", expected.getId(), actual.getId());
\r
77 assertEquals("element: name ", expected.getName(), actual.getName());
\r
80 public static void assertSequenceFlows(List<SequenceFlow> expectedSequenceList,
\r
81 List<SequenceFlow> actualSequenceFlowList) {
\r
82 assertEquals(expectedSequenceList.size(), actualSequenceFlowList.size());
\r
84 for (Iterator<SequenceFlow> iterator = expectedSequenceList.iterator(); iterator.hasNext();) {
\r
85 SequenceFlow expectedElement = (SequenceFlow) iterator.next();
\r
86 SequenceFlow actualElement = getSequenceById(expectedElement.getSourceRef(), expectedElement.getTargetRef(),
\r
87 actualSequenceFlowList);
\r
88 if (actualElement != null) {
\r
89 assertLink(expectedElement, actualElement);
\r
91 fail("Element with id " + expectedElement.getId() + " could not be found");
\r
96 private static SequenceFlow getSequenceById(String sourceRef, String targetRef,
\r
97 List<SequenceFlow> actualSequenceFlowList) {
\r
98 Iterator<SequenceFlow> iter = actualSequenceFlowList.iterator();
\r
99 while (iter.hasNext()) {
\r
100 SequenceFlow element = (SequenceFlow) iter.next();
\r
101 if (element.getSourceRef().equals(sourceRef) && element.getTargetRef().equals(targetRef)) {
\r
108 public static void assertLink(SequenceFlow expectedLink, SequenceFlow actualLink) {
\r
109 assertEquals("Link source: id", expectedLink.getSourceRef(), actualLink.getSourceRef());
\r
110 assertEquals("Link target :id", expectedLink.getTargetRef(), actualLink.getTargetRef());
\r
113 private static Process createReferenceProcess() {
\r
114 Process process = new Process(PROCESS_NAME);
\r
116 ScriptTask scriptTask = new ScriptTask();
\r
117 scriptTask.setId("scriptTask");
\r
118 scriptTask.setName("Script Task");
\r
119 Position position = new Position();
\r
120 position.setLeft(328);
\r
121 position.setTop(134);
\r
122 scriptTask.setPosition(position);
\r
123 scriptTask.setScript("");
\r
124 scriptTask.setScriptFormat("JavaScript");
\r
125 process.getElementList().add(scriptTask);
\r