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