Added oparent to sdc main
[sdc.git] / common / onap-tosca-datatype / src / test / java / org / onap / sdc / tosca / services / DataModelCloneUtilTest.java
1 /*
2  * Copyright © 2016-2018 European Support Limited
3  *
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
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 package org.onap.sdc.tosca.services;
18
19 import java.util.ArrayList;
20 import java.util.HashMap;
21 import java.util.List;
22 import java.util.Map;
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;
32
33 public class DataModelCloneUtilTest {
34
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";
48
49
50     @Test
51     public void cloneStringStringMapTest() {
52         Map<String, String> originalMap = new HashMap<>();
53         originalMap.put(KEY1, VAL1);
54         originalMap.put(KEY2, VAL2);
55
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));
60     }
61
62
63     @Test
64     public void cloneStringObjectMapTest() {
65         Map<String, Object> originalMap = new HashMap<>();
66         originalMap.put(KEY1, VAL1);
67         ArrayList<Object> list = new ArrayList<>();
68         list.add(VAL1);
69         list.add(VAL2);
70         originalMap.put(KEY2, list);
71         HashMap<String, String> map = new HashMap<>();
72         map.put(KEY1, VAL1);
73         map.put(KEY2, VAL2);
74         originalMap.put(KEY3, map);
75
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));
89     }
90
91
92     @Test
93     public void cloneStringOperationDefinitionMapsTest() {
94         OperationDefinition operationDefinition1 = createOperationDefinition(DESC1);
95         OperationDefinition operationDefinition2 = createOperationDefinition(DESC2);
96
97         Map<String, OperationDefinition> originalMap = new HashMap<>();
98         originalMap.put(KEY1, operationDefinition1);
99         originalMap.put(KEY2, operationDefinition2);
100
101
102         Map<String, OperationDefinition> cloneMap = DataModelCloneUtil.cloneStringOperationDefinitionMap(originalMap);
103
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());
107
108     }
109
110     private OperationDefinition createOperationDefinition(String desc) {
111         OperationDefinition operationDefinition = new OperationDefinition();
112         operationDefinition.setDescription(desc);
113         return operationDefinition;
114     }
115
116     @Test
117     public void cloneStringOperationDefinitionTemplateMapsTest() {
118         OperationDefinitionTemplate operationDefinitionTemp1 =
119                 createOperationDefinitionTemplate(DESC1, PRIMARY1, PARAM1, INPUT_KEY1);
120
121         OperationDefinitionTemplate operationDefinitionTemp2 =
122                 createOperationDefinitionTemplate(DESC2, PRIMARY2, PARAM2, INPUT_KEY2);
123
124
125         Map<String, OperationDefinitionTemplate> originalMap = new HashMap<>();
126         originalMap.put(KEY1, operationDefinitionTemp1);
127         originalMap.put(KEY2, operationDefinitionTemp2);
128
129
130         Map<String, OperationDefinitionTemplate> cloneMap =
131                 DataModelCloneUtil.cloneStringOperationDefinitionMap(originalMap);
132
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());
140
141
142     }
143
144     @Test
145     public void cloneStringOperationDefinitionTypeMapsTest() {
146         Map<String, PropertyDefinition> inputs = new HashMap<>();
147         inputs.put(INPUT_KEY1, createPropertyDefinition());
148
149         OperationDefinitionType operationDefinitionType1 = createOperationDefinitionType(DESC1, PRIMARY1, inputs);
150         OperationDefinitionType operationDefinitionType2 =
151                 createOperationDefinitionType(DESC2, PRIMARY2, DataModelCloneUtil.clonePropertyDefinitions(inputs));
152
153         Map<String, OperationDefinitionType> originalMap = new HashMap<>();
154         originalMap.put(KEY1, operationDefinitionType1);
155         originalMap.put(KEY2, operationDefinitionType2);
156
157         Map<String, OperationDefinitionType> cloneMap =
158                 DataModelCloneUtil.cloneStringOperationDefinitionMap(originalMap);
159
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());
168     }
169
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;
180     }
181
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;
195     }
196
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;
204     }
205
206 }