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.contextmodel.concepts;
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;
29 import static org.junit.Assert.fail;
31 import org.junit.Test;
32 import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
33 import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult;
34 import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult.ValidationResult;
35 import org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbum;
36 import org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbums;
39 * Context album tests.
41 * @author Liam Fallon (liam.fallon@ericsson.com)
43 public class ContextAlbumsTest {
46 public void testContextAlbums() {
47 assertNotNull(new AxContextAlbum());
48 assertNotNull(new AxContextAlbum(new AxArtifactKey()));
49 assertNotNull(new AxContextAlbum(new AxArtifactKey(), "AlbumScope", false, new AxArtifactKey()));
51 final AxArtifactKey albumKey = new AxArtifactKey("AlbumName", "0.0.1");
52 final AxArtifactKey albumSchemaKey = new AxArtifactKey("AlbumSchemaName", "0.0.1");
54 final AxContextAlbum album = new AxContextAlbum(albumKey, "AlbumScope", false, albumSchemaKey);
57 final AxArtifactKey newKey = new AxArtifactKey("NewAlbumName", "0.0.1");
59 assertEquals("NewAlbumName:0.0.1", album.getKey().getId());
60 assertEquals("NewAlbumName:0.0.1", album.getKeys().get(0).getId());
61 album.setKey(albumKey);
65 fail("test should throw an exception here");
66 } catch (final Exception e) {
67 assertEquals("parameter \"scope\": value \"\", does not match regular expression \"[A-Za-z0-9\\-_]+\"",
71 album.setScope("NewAlbumScope");
72 assertEquals("NewAlbumScope", album.getScope());
74 assertEquals(false, album.isWritable());
75 album.setWritable(true);
76 assertEquals(true, album.isWritable());
78 final AxArtifactKey newSchemaKey = new AxArtifactKey("NewAlbumSchemaName", "0.0.1");
79 album.setItemSchema(newSchemaKey);
80 assertEquals("NewAlbumSchemaName:0.0.1", album.getItemSchema().getId());
81 album.setItemSchema(albumSchemaKey);
83 AxValidationResult result = new AxValidationResult();
84 result = album.validate(result);
85 assertEquals(ValidationResult.VALID, result.getValidationResult());
87 album.setKey(AxArtifactKey.getNullKey());
88 result = new AxValidationResult();
89 result = album.validate(result);
90 assertEquals(ValidationResult.INVALID, result.getValidationResult());
93 result = new AxValidationResult();
94 result = album.validate(result);
95 assertEquals(ValidationResult.VALID, result.getValidationResult());
97 album.setScope("UNDEFINED");
98 result = new AxValidationResult();
99 result = album.validate(result);
100 assertEquals(ValidationResult.INVALID, result.getValidationResult());
102 album.setScope("NewAlbumScope");
103 result = new AxValidationResult();
104 result = album.validate(result);
105 assertEquals(ValidationResult.VALID, result.getValidationResult());
107 album.setItemSchema(AxArtifactKey.getNullKey());
108 result = new AxValidationResult();
109 result = album.validate(result);
110 assertEquals(ValidationResult.INVALID, result.getValidationResult());
112 album.setItemSchema(albumSchemaKey);
113 result = new AxValidationResult();
114 result = album.validate(result);
115 assertEquals(ValidationResult.VALID, result.getValidationResult());
119 final AxContextAlbum clonedAlbum = new AxContextAlbum(album);
120 assertEquals("AxContextAlbum:(key=AxArtifactKey:(name=NewAlbumName,version=0.0.1),"
121 + "scope=NewAlbumScope,isWritable=true,itemSchema="
122 + "AxArtifactKey:(name=AlbumSchemaName,version=0.0.1))", clonedAlbum.toString());
124 assertFalse(album.hashCode() == 0);
126 assertTrue(album.equals(album));
127 assertTrue(album.equals(clonedAlbum));
128 assertFalse(album.equals(null));
129 assertFalse(album.equals((Object)"Hello"));
130 assertFalse(album.equals(new AxContextAlbum(new AxArtifactKey(), "Scope", false, AxArtifactKey.getNullKey())));
131 assertFalse(album.equals(new AxContextAlbum(newKey, "Scope", false, AxArtifactKey.getNullKey())));
132 assertFalse(album.equals(new AxContextAlbum(newKey, "NewAlbumScope", false, AxArtifactKey.getNullKey())));
133 assertFalse(album.equals(new AxContextAlbum(newKey, "NewAlbumScope", true, AxArtifactKey.getNullKey())));
134 assertTrue(album.equals(new AxContextAlbum(newKey, "NewAlbumScope", true, albumSchemaKey)));
136 assertEquals(0, album.compareTo(album));
137 assertEquals(0, album.compareTo(clonedAlbum));
138 assertNotEquals(0, album.compareTo(null));
139 assertNotEquals(0, album.compareTo(new AxArtifactKey()));
140 assertNotEquals(0, album.compareTo(
141 new AxContextAlbum(new AxArtifactKey(), "Scope", false, AxArtifactKey.getNullKey())));
142 assertNotEquals(0, album.compareTo(new AxContextAlbum(newKey, "Scope", false, AxArtifactKey.getNullKey())));
143 assertNotEquals(0, album
144 .compareTo(new AxContextAlbum(newKey, "NewAlbumScope", false, AxArtifactKey.getNullKey())));
146 album.compareTo(new AxContextAlbum(newKey, "NewAlbumScope", true, AxArtifactKey.getNullKey())));
147 assertEquals(0, album.compareTo(new AxContextAlbum(newKey, "NewAlbumScope", true, albumSchemaKey)));
149 final AxContextAlbums albums = new AxContextAlbums();
150 result = new AxValidationResult();
151 result = albums.validate(result);
152 assertEquals(ValidationResult.INVALID, result.getValidationResult());
154 // Observation, no albums in album map
155 albums.setKey(new AxArtifactKey("AlbumsKey", "0.0.1"));
156 result = new AxValidationResult();
157 result = albums.validate(result);
158 assertEquals(ValidationResult.OBSERVATION, result.getValidationResult());
160 albums.getAlbumsMap().put(newKey, album);
161 result = new AxValidationResult();
162 result = albums.validate(result);
163 assertEquals(ValidationResult.VALID, result.getValidationResult());
165 albums.getAlbumsMap().put(AxArtifactKey.getNullKey(), null);
166 result = new AxValidationResult();
167 result = albums.validate(result);
168 assertEquals(ValidationResult.INVALID, result.getValidationResult());
170 albums.getAlbumsMap().remove(AxArtifactKey.getNullKey());
171 result = new AxValidationResult();
172 result = albums.validate(result);
173 assertEquals(ValidationResult.VALID, result.getValidationResult());
175 albums.getAlbumsMap().put(new AxArtifactKey("NullValueKey", "0.0.1"), null);
176 result = new AxValidationResult();
177 result = albums.validate(result);
178 assertEquals(ValidationResult.INVALID, result.getValidationResult());
180 albums.getAlbumsMap().remove(new AxArtifactKey("NullValueKey", "0.0.1"));
181 result = new AxValidationResult();
182 result = albums.validate(result);
183 assertEquals(ValidationResult.VALID, result.getValidationResult());
187 final AxContextAlbums clonedAlbums = new AxContextAlbums(albums);
188 assertTrue(clonedAlbums.toString().startsWith(
189 "AxContextAlbums:(AxContextAlbums:(key=AxArtifactKey:(name=AlbumsKey,version=0.0.1)"));
191 assertFalse(albums.hashCode() == 0);
193 assertTrue(albums.equals(albums));
194 assertTrue(albums.equals(clonedAlbums));
195 assertFalse(albums.equals(null));
196 assertFalse(albums.equals((Object)"Hello"));
197 assertFalse(albums.equals(new AxContextAlbums(new AxArtifactKey())));
199 assertEquals(0, albums.compareTo(albums));
200 assertEquals(0, albums.compareTo(clonedAlbums));
201 assertNotEquals(0, albums.compareTo(null));
202 assertNotEquals(0, albums.compareTo(new AxArtifactKey()));
203 assertNotEquals(0, albums.compareTo(new AxContextAlbums(new AxArtifactKey())));
205 clonedAlbums.get(newKey).setScope("YetAnotherScope");
206 assertNotEquals(0, albums.compareTo(clonedAlbums));
208 assertEquals("NewAlbumName", albums.get("NewAlbumName").getKey().getName());
209 assertEquals("NewAlbumName", albums.get("NewAlbumName", "0.0.1").getKey().getName());
210 assertEquals(1, albums.getAll("NewAlbumName", "0.0.1").size());
211 assertEquals(0, albums.getAll("NonExistantAlbumName").size());