2 * Copyright © 2016-2018 European Support Limited
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.onap.sdc.tosca.services;
19 import java.util.ArrayList;
20 import java.util.HashMap;
21 import java.util.List;
23 import org.junit.Assert;
24 import org.junit.Test;
25 import org.onap.sdc.tosca.datatypes.model.Constraint;
26 import org.onap.sdc.tosca.datatypes.model.Implementation;
27 import org.onap.sdc.tosca.datatypes.model.OperationDefinition;
28 import org.onap.sdc.tosca.datatypes.model.OperationDefinitionTemplate;
29 import org.onap.sdc.tosca.datatypes.model.OperationDefinitionType;
30 import org.onap.sdc.tosca.datatypes.model.PropertyDefinition;
31 import org.onap.sdc.tosca.datatypes.model.Status;
33 public class DataModelCloneUtilTest {
35 private static final String KEY1 = "Key1";
36 private static final String VAL1 = "Val1";
37 private static final String KEY2 = "Key2";
38 private static final String VAL2 = "Val2";
39 private static final String KEY3 = "Key3";
40 private static final String DESC1 = "Desc1";
41 private static final String DESC2 = "Desc2";
42 private static final String PRIMARY1 = "primary1";
43 private static final String PARAM1 = "param1";
44 private static final String INPUT_KEY1 = "inKey1";
45 private static final String PRIMARY2 = "primary2";
46 private static final String PARAM2 = "param2";
47 private static final String INPUT_KEY2 = "inKey2";
51 public void cloneStringStringMapTest() {
52 Map<String, String> originalMap = new HashMap<>();
53 originalMap.put(KEY1, VAL1);
54 originalMap.put(KEY2, VAL2);
56 Map<String, String> cloneMap = DataModelCloneUtil.cloneStringStringMap(originalMap);
57 Assert.assertEquals(originalMap.size(), cloneMap.size());
58 Assert.assertEquals(originalMap.get(KEY1), cloneMap.get(KEY1));
59 Assert.assertEquals(originalMap.get(KEY2), cloneMap.get(KEY2));
64 public void cloneStringObjectMapTest() {
65 Map<String, Object> originalMap = new HashMap<>();
66 originalMap.put(KEY1, VAL1);
67 ArrayList<Object> list = new ArrayList<>();
70 originalMap.put(KEY2, list);
71 HashMap<String, String> map = new HashMap<>();
74 originalMap.put(KEY3, map);
76 Map<String, Object> cloneMap = DataModelCloneUtil.cloneStringObjectMap(originalMap);
77 Assert.assertEquals(originalMap.size(), cloneMap.size());
78 Assert.assertEquals(originalMap.get(KEY1), cloneMap.get(KEY1));
79 List originalListObj = (List) originalMap.get(KEY2);
80 List cloneListObj = (List) cloneMap.get(KEY2);
81 Assert.assertEquals(originalListObj.size(), cloneListObj.size());
82 Assert.assertEquals(originalListObj.get(0), cloneListObj.get(0));
83 Assert.assertEquals(originalListObj.get(1), cloneListObj.get(1));
84 Map originalMapObj = (Map) originalMap.get(KEY3);
85 Map cloneMapObj = (Map) cloneMap.get(KEY3);
86 Assert.assertEquals(originalMapObj.size(), cloneMapObj.size());
87 Assert.assertEquals(originalMapObj.get(KEY1), cloneMapObj.get(KEY1));
88 Assert.assertEquals(originalMapObj.get(KEY2), cloneMapObj.get(KEY2));
93 public void cloneStringOperationDefinitionMapsTest() {
94 OperationDefinition operationDefinition1 = createOperationDefinition(DESC1);
95 OperationDefinition operationDefinition2 = createOperationDefinition(DESC2);
97 Map<String, OperationDefinition> originalMap = new HashMap<>();
98 originalMap.put(KEY1, operationDefinition1);
99 originalMap.put(KEY2, operationDefinition2);
102 Map<String, OperationDefinition> cloneMap = DataModelCloneUtil.cloneStringOperationDefinitionMap(originalMap);
104 Assert.assertEquals(originalMap.size(), cloneMap.size());
105 Assert.assertEquals(originalMap.get(KEY1).getDescription(), cloneMap.get(KEY1).getDescription());
106 Assert.assertEquals(originalMap.get(KEY2).getDescription(), cloneMap.get(KEY2).getDescription());
110 private OperationDefinition createOperationDefinition(String desc) {
111 OperationDefinition operationDefinition = new OperationDefinition();
112 operationDefinition.setDescription(desc);
113 return operationDefinition;
117 public void cloneStringOperationDefinitionTemplateMapsTest() {
118 OperationDefinitionTemplate operationDefinitionTemp1 =
119 createOperationDefinitionTemplate(DESC1, PRIMARY1, PARAM1, INPUT_KEY1);
121 OperationDefinitionTemplate operationDefinitionTemp2 =
122 createOperationDefinitionTemplate(DESC2, PRIMARY2, PARAM2, INPUT_KEY2);
125 Map<String, OperationDefinitionTemplate> originalMap = new HashMap<>();
126 originalMap.put(KEY1, operationDefinitionTemp1);
127 originalMap.put(KEY2, operationDefinitionTemp2);
130 Map<String, OperationDefinitionTemplate> cloneMap =
131 DataModelCloneUtil.cloneStringOperationDefinitionMap(originalMap);
133 Assert.assertEquals(originalMap.size(), cloneMap.size());
134 Assert.assertEquals(originalMap.get(KEY1).getDescription(), cloneMap.get(KEY1).getDescription());
135 Assert.assertEquals(originalMap.get(KEY2).getDescription(), cloneMap.get(KEY2).getDescription());
136 Assert.assertEquals(originalMap.get(KEY1).getImplementation().getPrimary(),
137 cloneMap.get(KEY1).getImplementation().getPrimary());
138 Assert.assertEquals(originalMap.get(KEY2).getInputs().get(INPUT_KEY2).toString(),
139 cloneMap.get(KEY2).getInputs().get(INPUT_KEY2).toString());
145 public void cloneStringOperationDefinitionTypeMapsTest() {
146 Map<String, PropertyDefinition> inputs = new HashMap<>();
147 inputs.put(INPUT_KEY1, createPropertyDefinition());
149 OperationDefinitionType operationDefinitionType1 = createOperationDefinitionType(DESC1, PRIMARY1, inputs);
150 OperationDefinitionType operationDefinitionType2 =
151 createOperationDefinitionType(DESC2, PRIMARY2, DataModelCloneUtil.clonePropertyDefinitions(inputs));
153 Map<String, OperationDefinitionType> originalMap = new HashMap<>();
154 originalMap.put(KEY1, operationDefinitionType1);
155 originalMap.put(KEY2, operationDefinitionType2);
157 Map<String, OperationDefinitionType> cloneMap =
158 DataModelCloneUtil.cloneStringOperationDefinitionMap(originalMap);
160 Assert.assertEquals(originalMap.size(), cloneMap.size());
161 Assert.assertEquals(originalMap.get(KEY1).getDescription(), cloneMap.get(KEY1).getDescription());
162 Assert.assertEquals(originalMap.get(KEY2).getDescription(), cloneMap.get(KEY2).getDescription());
163 Assert.assertEquals(originalMap.get(KEY1).getImplementation(), cloneMap.get(KEY1).getImplementation());
164 Assert.assertEquals(originalMap.get(KEY2).getInputs().get(INPUT_KEY1).getStatus().getDisplayName(),
165 cloneMap.get(DataModelCloneUtilTest.KEY2).getInputs().get(INPUT_KEY1).getStatus().getDisplayName());
166 Assert.assertEquals(originalMap.get(KEY2).getInputs().get(INPUT_KEY1).getConstraints().get(0).getEqual(),
167 cloneMap.get(KEY2).getInputs().get(INPUT_KEY1).getConstraints().get(0).getEqual());
170 private PropertyDefinition createPropertyDefinition() {
171 PropertyDefinition propertyDefinition = new PropertyDefinition();
172 propertyDefinition.setRequired(false);
173 propertyDefinition.setStatus(Status.UNSUPPORTED);
174 Constraint constraint = new Constraint();
175 constraint.setEqual("1234");
176 ArrayList<Constraint> constraints = new ArrayList<>();
177 constraints.add(constraint);
178 propertyDefinition.setConstraints(constraints);
179 return propertyDefinition;
182 private OperationDefinitionTemplate createOperationDefinitionTemplate(String desc, String primary,
183 String inputParameterName, String inputKey) {
184 OperationDefinitionTemplate operationDefinitionTemp = new OperationDefinitionTemplate();
185 operationDefinitionTemp.setDescription(desc);
186 Implementation implementation = new Implementation();
187 implementation.setPrimary(primary);
188 operationDefinitionTemp.setImplementation(implementation);
189 HashMap<String, String> valueAssignment = new HashMap<>();
190 valueAssignment.put("get_input", inputParameterName);
191 HashMap<String, Object> inputs = new HashMap<>();
192 inputs.put(inputKey, valueAssignment);
193 operationDefinitionTemp.setInputs(inputs);
194 return operationDefinitionTemp;
197 private OperationDefinitionType createOperationDefinitionType(String desc, String implementationValue,
198 Map<String, PropertyDefinition> inputs) {
199 OperationDefinitionType operationDefinitionType = new OperationDefinitionType();
200 operationDefinitionType.setDescription(desc);
201 operationDefinitionType.setImplementation(implementationValue);
202 operationDefinitionType.setInputs(inputs);
203 return operationDefinitionType;