2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2016-2018 Ericsson. All rights reserved.
4 * ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.apex.model.contextmodel.concepts;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertFalse;
25 import static org.junit.Assert.assertNotEquals;
26 import static org.junit.Assert.assertNotNull;
27 import static org.junit.Assert.assertTrue;
28 import static org.junit.Assert.fail;
30 import org.junit.Test;
31 import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
32 import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult;
33 import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult.ValidationResult;
34 import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
35 import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
38 * @author Liam Fallon (liam.fallon@ericsson.com)
40 public class TestContextSchemas {
43 public void testContextSchemas() {
44 assertNotNull(new AxContextSchema());
45 assertNotNull(new AxContextSchema(new AxArtifactKey(), "SchemaFlavour", "SchemaDefinition"));
47 final AxContextSchema schema =
48 new AxContextSchema(new AxArtifactKey("SchemaName", "0.0.1"), "SchemaFlavour", "SchemaDefinition");
49 assertNotNull(schema);
51 final AxArtifactKey newKey = new AxArtifactKey("NewSchemaName", "0.0.1");
52 schema.setKey(newKey);
53 assertEquals("NewSchemaName:0.0.1", schema.getKey().getID());
54 assertEquals("NewSchemaName:0.0.1", schema.getKeys().get(0).getID());
57 schema.setSchemaFlavour("");
58 fail("test should throw an exception here");
59 } catch (final Exception e) {
61 "parameter \"schemaFlavour\": value \"\", does not match regular expression \"[A-Za-z0-9\\-_]+\"",
65 schema.setSchemaFlavour("NewSchemaFlavour");
66 assertEquals("NewSchemaFlavour", schema.getSchemaFlavour());
68 schema.setSchema("NewSchemaDefinition");
69 assertEquals("NewSchemaDefinition", schema.getSchema());
71 AxValidationResult result = new AxValidationResult();
72 result = schema.validate(result);
73 assertEquals(ValidationResult.VALID, result.getValidationResult());
75 schema.setKey(AxArtifactKey.getNullKey());
76 result = new AxValidationResult();
77 result = schema.validate(result);
78 assertEquals(ValidationResult.INVALID, result.getValidationResult());
80 schema.setKey(newKey);
81 result = new AxValidationResult();
82 result = schema.validate(result);
83 assertEquals(ValidationResult.VALID, result.getValidationResult());
85 schema.setSchemaFlavour("UNDEFINED");
86 result = new AxValidationResult();
87 result = schema.validate(result);
88 assertEquals(ValidationResult.INVALID, result.getValidationResult());
90 schema.setSchemaFlavour("NewSchemaFlavour");
91 result = new AxValidationResult();
92 result = schema.validate(result);
93 assertEquals(ValidationResult.VALID, result.getValidationResult());
96 result = new AxValidationResult();
97 result = schema.validate(result);
98 assertEquals(ValidationResult.INVALID, result.getValidationResult());
100 schema.setSchema("NewSchemaDefinition");
101 result = new AxValidationResult();
102 result = schema.validate(result);
103 assertEquals(ValidationResult.VALID, result.getValidationResult());
107 final AxContextSchema clonedSchema = new AxContextSchema(schema);
109 "AxContextSchema:(key=AxArtifactKey:(name=NewSchemaName,version=0.0.1),schemaFlavour=NewSchemaFlavour,schemaDefinition=NewSchemaDefinition)",
110 clonedSchema.toString());
112 assertFalse(schema.hashCode() == 0);
114 assertTrue(schema.equals(schema));
115 assertTrue(schema.equals(clonedSchema));
116 assertFalse(schema.equals(null));
117 assertFalse(schema.equals("Hello"));
118 assertFalse(schema.equals(new AxContextSchema(new AxArtifactKey(), "Flavour", "Def")));
119 assertFalse(schema.equals(new AxContextSchema(newKey, "Flavour", "Def")));
120 assertFalse(schema.equals(new AxContextSchema(newKey, "NewSchemaFlavour", "Def")));
121 assertTrue(schema.equals(new AxContextSchema(newKey, "NewSchemaFlavour", "NewSchemaDefinition")));
123 assertEquals(0, schema.compareTo(schema));
124 assertEquals(0, schema.compareTo(clonedSchema));
125 assertNotEquals(0, schema.compareTo(null));
126 assertNotEquals(0, schema.compareTo(new AxArtifactKey()));
127 assertNotEquals(0, schema.compareTo(new AxContextSchema(new AxArtifactKey(), "Flavour", "Def")));
128 assertNotEquals(0, schema.compareTo(new AxContextSchema(newKey, "Flavour", "Def")));
129 assertNotEquals(0, schema.compareTo(new AxContextSchema(newKey, "NewSchemaFlavour", "Def")));
130 assertEquals(0, schema.compareTo(new AxContextSchema(newKey, "NewSchemaFlavour", "NewSchemaDefinition")));
132 final AxContextSchemas schemas = new AxContextSchemas();
133 result = new AxValidationResult();
134 result = schemas.validate(result);
135 assertEquals(ValidationResult.INVALID, result.getValidationResult());
137 // Still invalid, no schemas in schema map
138 schemas.setKey(new AxArtifactKey("SchemasKey", "0.0.1"));
139 result = new AxValidationResult();
140 result = schemas.validate(result);
141 assertEquals(ValidationResult.INVALID, result.getValidationResult());
143 schemas.getSchemasMap().put(newKey, schema);
144 result = new AxValidationResult();
145 result = schemas.validate(result);
146 assertEquals(ValidationResult.VALID, result.getValidationResult());
148 schemas.getSchemasMap().put(AxArtifactKey.getNullKey(), null);
149 result = new AxValidationResult();
150 result = schemas.validate(result);
151 assertEquals(ValidationResult.INVALID, result.getValidationResult());
153 schemas.getSchemasMap().remove(AxArtifactKey.getNullKey());
154 result = new AxValidationResult();
155 result = schemas.validate(result);
156 assertEquals(ValidationResult.VALID, result.getValidationResult());
158 schemas.getSchemasMap().put(new AxArtifactKey("NullValueKey", "0.0.1"), null);
159 result = new AxValidationResult();
160 result = schemas.validate(result);
161 assertEquals(ValidationResult.INVALID, result.getValidationResult());
163 schemas.getSchemasMap().remove(new AxArtifactKey("NullValueKey", "0.0.1"));
164 result = new AxValidationResult();
165 result = schemas.validate(result);
166 assertEquals(ValidationResult.VALID, result.getValidationResult());
170 final AxContextSchemas clonedSchemas = new AxContextSchemas(schemas);
171 assertTrue(clonedSchemas.toString()
172 .startsWith("AxContextSchemas:(key=AxArtifactKey:(name=SchemasKey,version=0.0.1),"));
174 assertFalse(schemas.hashCode() == 0);
176 assertTrue(schemas.equals(schemas));
177 assertTrue(schemas.equals(clonedSchemas));
178 assertFalse(schemas.equals(null));
179 assertFalse(schemas.equals("Hello"));
180 assertFalse(schemas.equals(new AxContextSchemas(new AxArtifactKey())));
182 assertEquals(0, schemas.compareTo(schemas));
183 assertEquals(0, schemas.compareTo(clonedSchemas));
184 assertNotEquals(0, schemas.compareTo(null));
185 assertNotEquals(0, schemas.compareTo(new AxArtifactKey()));
186 assertNotEquals(0, schemas.compareTo(new AxContextSchemas(new AxArtifactKey())));
188 clonedSchemas.get(newKey).setSchemaFlavour("YetAnotherFlavour");
189 assertNotEquals(0, schemas.compareTo(clonedSchemas));
191 assertEquals("NewSchemaName", schemas.get("NewSchemaName").getKey().getName());
192 assertEquals("NewSchemaName", schemas.get("NewSchemaName", "0.0.1").getKey().getName());
193 assertEquals(1, schemas.getAll("NewSchemaName", "0.0.1").size());
194 assertEquals(0, schemas.getAll("NonExistantSchemaName").size());