2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2016-2018 Ericsson. All rights reserved.
4 * Modifications Copyright (C) 2019 Nordix Foundation.
5 * ================================================================================
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
18 * SPDX-License-Identifier: Apache-2.0
19 * ============LICENSE_END=========================================================
22 package org.onap.policy.apex.model.basicmodel.handling;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertFalse;
26 import static org.junit.Assert.assertNotEquals;
27 import static org.junit.Assert.assertNotNull;
28 import static org.junit.Assert.assertTrue;
30 import java.util.List;
33 import org.junit.Before;
34 import org.junit.Test;
35 import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
36 import org.onap.policy.apex.model.basicmodel.concepts.AxKey;
37 import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInfo;
38 import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInformation;
39 import org.onap.policy.apex.model.basicmodel.concepts.AxKeyUse;
40 import org.onap.policy.apex.model.basicmodel.concepts.AxModel;
41 import org.onap.policy.apex.model.basicmodel.concepts.AxReferenceKey;
42 import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult;
43 import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult.ValidationResult;
44 import org.onap.policy.apex.model.basicmodel.service.ModelService;
45 import org.onap.policy.apex.model.basicmodel.test.TestApexModel;
47 public class SupportApexBasicModelConceptsTester {
48 TestApexModel<AxModel> testApexModel;
51 public void setup() throws Exception {
52 testApexModel = new TestApexModel<AxModel>(AxModel.class, new DummyApexBasicModelCreator());
56 public void testModelConcepts() {
57 final AxModel model = testApexModel.getModel();
62 AxValidationResult result = new AxValidationResult();
63 result = model.validate(result);
64 assertEquals(ValidationResult.WARNING, result.getValidationResult());
67 assertEquals(model.getKeyInformation(), ModelService.getModel(AxKeyInformation.class));
69 final AxModel clonedModel = new AxModel(model);
70 assertTrue(clonedModel.toString().startsWith("AxModel:(key=AxArtifactKey:(name=BasicModel"));
72 assertFalse(model.hashCode() == 0);
74 assertTrue(model.equals(model));
75 assertTrue(model.equals(clonedModel));
76 assertFalse(model.equals(null));
77 assertFalse(model.equals((Object)"Hello"));
78 clonedModel.getKey().setVersion("0.0.2");
79 assertFalse(model.equals(clonedModel));
80 clonedModel.getKey().setVersion("0.0.1");
82 assertEquals(0, model.compareTo(model));
83 assertNotEquals(0, model.compareTo(null));
84 assertNotEquals(0, model.compareTo(new AxReferenceKey()));
85 assertEquals(0, model.compareTo(clonedModel));
86 clonedModel.getKey().setVersion("0.0.2");
87 assertNotEquals(0, model.compareTo(clonedModel));
88 clonedModel.getKey().setVersion("0.0.1");
90 assertNotNull(model.getKeys());
92 model.getKeyInformation().generateKeyInfo(model);
93 assertNotNull(model.getKeyInformation());
95 final AxKeyInformation keyI = model.getKeyInformation();
96 final AxKeyInformation clonedKeyI = new AxKeyInformation(keyI);
98 assertFalse(keyI.equals(null));
99 assertFalse(keyI.equals((Object)new AxArtifactKey()));
100 assertTrue(keyI.equals(clonedKeyI));
102 clonedKeyI.setKey(new AxArtifactKey());
103 assertFalse(keyI.equals(clonedKeyI));
104 clonedKeyI.setKey(keyI.getKey());
106 assertEquals(0, keyI.compareTo(keyI));
107 assertEquals(0, keyI.compareTo(clonedKeyI));
108 assertNotEquals(0, keyI.compareTo(null));
109 assertNotEquals(0, keyI.compareTo(new AxArtifactKey()));
111 clonedKeyI.setKey(new AxArtifactKey());
112 assertNotEquals(0, keyI.compareTo(clonedKeyI));
113 clonedKeyI.setKey(keyI.getKey());
114 assertEquals(0, keyI.compareTo(clonedKeyI));
116 clonedKeyI.getKeyInfoMap().clear();
117 assertNotEquals(0, keyI.compareTo(clonedKeyI));
119 AxKeyInfo keyInfo = keyI.get("BasicModel");
120 assertNotNull(keyInfo);
122 keyInfo = keyI.get(new AxArtifactKey("BasicModel", "0.0.1"));
123 assertNotNull(keyInfo);
125 Set<AxKeyInfo> keyInfoSet = keyI.getAll("BasicModel");
126 assertNotNull(keyInfoSet);
128 keyInfoSet = keyI.getAll("BasicModel", "0..0.1");
129 assertNotNull(keyInfoSet);
131 List<AxKey> keys = model.getKeys();
132 assertNotEquals(0, keys.size());
134 keys = keyI.getKeys();
135 assertNotEquals(0, keys.size());
137 model.getKeyInformation().generateKeyInfo(model);
138 assertNotNull(model.getKeyInformation());
139 model.getKeyInformation().getKeyInfoMap().clear();
140 model.getKeyInformation().generateKeyInfo(model);
141 assertNotNull(model.getKeyInformation());
143 clonedKeyI.setKey(AxArtifactKey.getNullKey());
144 result = new AxValidationResult();
145 result = clonedKeyI.validate(result);
146 assertEquals(ValidationResult.INVALID, result.getValidationResult());
147 clonedKeyI.setKey(keyI.getKey());
149 clonedKeyI.getKeyInfoMap().clear();
150 result = new AxValidationResult();
151 result = clonedKeyI.validate(result);
152 assertEquals(ValidationResult.INVALID, result.getValidationResult());
153 clonedKeyI.generateKeyInfo(model);
155 result = new AxValidationResult();
156 result = clonedKeyI.validate(result);
157 assertEquals(ValidationResult.VALID, result.getValidationResult());
159 clonedKeyI.getKeyInfoMap().put(AxArtifactKey.getNullKey(), null);
160 result = new AxValidationResult();
161 result = clonedKeyI.validate(result);
162 assertEquals(ValidationResult.INVALID, result.getValidationResult());
163 clonedKeyI.getKeyInfoMap().clear();
164 clonedKeyI.generateKeyInfo(model);
166 result = new AxValidationResult();
167 result = clonedKeyI.validate(result);
168 assertEquals(ValidationResult.VALID, result.getValidationResult());
170 clonedKeyI.getKeyInfoMap().put(new AxArtifactKey("SomeKey", "0.0.1"), null);
171 result = new AxValidationResult();
172 result = clonedKeyI.validate(result);
173 assertEquals(ValidationResult.INVALID, result.getValidationResult());
174 clonedKeyI.getKeyInfoMap().clear();
175 clonedKeyI.generateKeyInfo(model);
177 result = new AxValidationResult();
178 result = clonedKeyI.validate(result);
179 assertEquals(ValidationResult.VALID, result.getValidationResult());
181 final AxKeyInfo mk = clonedKeyI.get(new AxArtifactKey("BasicModel", "0.0.1"));
183 mk.setKey(AxArtifactKey.getNullKey());
184 result = new AxValidationResult();
185 result = clonedKeyI.validate(result);
186 assertEquals(ValidationResult.INVALID, result.getValidationResult());
187 clonedKeyI.getKeyInfoMap().clear();
188 clonedKeyI.generateKeyInfo(model);
190 result = new AxValidationResult();
191 result = clonedKeyI.validate(result);
192 assertEquals(ValidationResult.VALID, result.getValidationResult());
194 clonedModel.setKey(AxArtifactKey.getNullKey());
195 result = new AxValidationResult();
196 result = clonedModel.validate(result);
197 assertEquals(ValidationResult.INVALID, result.getValidationResult());
199 clonedModel.setKey(model.getKey());
200 result = new AxValidationResult();
201 result = clonedKeyI.validate(result);
202 assertEquals(ValidationResult.VALID, result.getValidationResult());
206 public void testModelConceptsWithReferences() {
207 final DummyAxModelWithReferences mwr = new DummyApexBasicModelCreator().getModelWithReferences();
209 mwr.getKeyInformation().getKeyInfoMap().clear();
210 mwr.getKeyInformation().generateKeyInfo(mwr);
212 AxValidationResult result = new AxValidationResult();
213 result = mwr.validate(result);
214 assertEquals(ValidationResult.VALID, result.getValidationResult());
216 // Duplicate key error
217 mwr.addKey(mwr.getKey());
218 result = new AxValidationResult();
219 result = mwr.validate(result);
220 assertEquals(ValidationResult.INVALID, result.getValidationResult());
221 mwr.removeKey(mwr.getKey());
223 result = new AxValidationResult();
224 result = mwr.validate(result);
225 assertEquals(ValidationResult.VALID, result.getValidationResult());
227 // Null Reference Key
228 mwr.addKey(AxReferenceKey.getNullKey());
229 result = new AxValidationResult();
230 result = mwr.validate(result);
231 assertEquals(ValidationResult.INVALID, result.getValidationResult());
232 mwr.removeKey(AxReferenceKey.getNullKey());
234 result = new AxValidationResult();
235 result = mwr.validate(result);
236 assertEquals(ValidationResult.VALID, result.getValidationResult());
238 // Duplicate Reference Key
239 final AxReferenceKey rKey = new AxReferenceKey(mwr.getKey(), "LocalName");
242 result = new AxValidationResult();
243 result = mwr.validate(result);
244 assertEquals(ValidationResult.INVALID, result.getValidationResult());
248 result = new AxValidationResult();
249 result = mwr.validate(result);
250 assertEquals(ValidationResult.VALID, result.getValidationResult());
253 final AxKeyUse keyU = new AxKeyUse(mwr.getKey());
255 result = new AxValidationResult();
256 result = mwr.validate(result);
257 assertEquals(ValidationResult.VALID, result.getValidationResult());
260 // Key Use on bad artifact key
261 final AxKeyUse keyBadUsage = new AxKeyUse(new AxArtifactKey("SomeKey", "0.0.1"));
262 mwr.addKey(keyBadUsage);
263 result = new AxValidationResult();
264 result = mwr.validate(result);
265 assertEquals(ValidationResult.INVALID, result.getValidationResult());
266 mwr.removeKey(keyBadUsage);
268 // Key Use on bad reference key
269 final AxKeyUse keyBadReferenceUsage = new AxKeyUse(new AxReferenceKey("SomeKey", "0.0.1", "Local"));
270 mwr.addKey(keyBadReferenceUsage);
271 result = new AxValidationResult();
272 result = mwr.validate(result);
273 assertEquals(ValidationResult.INVALID, result.getValidationResult());
274 mwr.removeKey(keyBadReferenceUsage);
276 result = new AxValidationResult();
277 result = mwr.validate(result);
278 assertEquals(ValidationResult.VALID, result.getValidationResult());