summaryrefslogtreecommitdiffstats
path: root/utils/src/test/java/org/onap
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2020-03-12 15:49:01 -0400
committerJim Hahn <jrh3@att.com>2020-03-12 15:58:31 -0400
commitad2cfb201d37857a51b350bf6b2e5e3ab7adf19a (patch)
treefe76482104ce35ea7c417e00478e53556ed03f8d /utils/src/test/java/org/onap
parent41c956dcca4315fe0f396c684b5f6f0da49fb4b0 (diff)
Move code from drools-apps to common
Extracted code from ControlLoopUtils to create a new class in common, PropertyObjectUtils. Fixed a deprecated method invocation in a junit. Fixed an object casting (i.e., sonar) issue in SCO. Issue-ID: POLICY-2305 Signed-off-by: Jim Hahn <jrh3@att.com> Change-Id: I331a47297f67097ea6986be125ef93cd1954b5ff
Diffstat (limited to 'utils/src/test/java/org/onap')
-rw-r--r--utils/src/test/java/org/onap/policy/common/utils/properties/PropertyObjectUtilsTest.java212
-rw-r--r--utils/src/test/java/org/onap/policy/common/utils/properties/exception/SupportBasicPropertyExceptionTester.java18
2 files changed, 220 insertions, 10 deletions
diff --git a/utils/src/test/java/org/onap/policy/common/utils/properties/PropertyObjectUtilsTest.java b/utils/src/test/java/org/onap/policy/common/utils/properties/PropertyObjectUtilsTest.java
new file mode 100644
index 00000000..83b264f5
--- /dev/null
+++ b/utils/src/test/java/org/onap/policy/common/utils/properties/PropertyObjectUtilsTest.java
@@ -0,0 +1,212 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.common.utils.properties;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+import java.util.AbstractSet;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import org.junit.Test;
+import org.onap.policy.common.utils.coder.CoderException;
+import org.onap.policy.common.utils.coder.StandardCoder;
+
+public class PropertyObjectUtilsTest {
+
+ @Test
+ public void testToObject() {
+ Map<String, String> map = Map.of("abc", "def", "ghi", "jkl");
+ Properties props = new Properties();
+ props.putAll(map);
+
+ // with empty prefix
+ Map<String, Object> result = PropertyObjectUtils.toObject(props, "");
+ assertEquals(map, result);
+
+ // with dotted prefix - other items skipped
+ map = Map.of("pfx.abc", "def", "ghi", "jkl", "pfx.mno", "pqr", "differentpfx.stu", "vwx");
+ props.clear();
+ props.putAll(Map.of("pfx.abc", "def", "ghi", "jkl", "pfx.mno", "pqr", "differentpfx.stu", "vwx"));
+ result = PropertyObjectUtils.toObject(props, "pfx.");
+ map = Map.of("abc", "def", "mno", "pqr");
+ assertEquals(map, result);
+
+ // undotted prefix - still skips other items
+ result = PropertyObjectUtils.toObject(props, "pfx");
+ assertEquals(map, result);
+ }
+
+ @Test
+ public void testSetProperty() {
+ // one, two, and three components in the name, the last two with subscripts
+ Map<String, Object> map = Map.of("one", "one.abc", "two.def", "two.ghi", "three.jkl.mno[0]", "three.pqr",
+ "three.jkl.mno[1]", "three.stu");
+ Properties props = new Properties();
+ props.putAll(map);
+
+ Map<String, Object> result = PropertyObjectUtils.toObject(props, "");
+ // @formatter:off
+ map = Map.of(
+ "one", "one.abc",
+ "two", Map.of("def", "two.ghi"),
+ "three", Map.of("jkl",
+ Map.of("mno",
+ List.of("three.pqr", "three.stu"))));
+ // @formatter:on
+ assertEquals(map, result);
+ }
+
+ @Test
+ public void testGetNode() {
+ Map<String, Object> map = Map.of("abc[0].def", "node.ghi", "abc[0].jkl", "node.mno", "abc[1].def", "node.pqr");
+ Properties props = new Properties();
+ props.putAll(map);
+
+ Map<String, Object> result = PropertyObjectUtils.toObject(props, "");
+ // @formatter:off
+ map = Map.of(
+ "abc",
+ List.of(
+ Map.of("def", "node.ghi", "jkl", "node.mno"),
+ Map.of("def", "node.pqr")
+ ));
+ // @formatter:on
+ assertEquals(map, result);
+
+ }
+
+ @Test
+ public void testExpand() {
+ // add subscripts out of order
+ Properties props = makeProperties("abc[2]", "expand.def", "abc[1]", "expand.ghi");
+
+ Map<String, Object> result = PropertyObjectUtils.toObject(props, "");
+ // @formatter:off
+ Map<String,Object> map =
+ Map.of("abc",
+ Arrays.asList(null, "expand.ghi", "expand.def"));
+ // @formatter:on
+ assertEquals(map, result);
+
+ }
+
+ @Test
+ public void testGetObject() {
+ // first value is primitive, while second is a map
+ Properties props = makeProperties("object.abc", "object.def", "object.abc.ghi", "object.jkl");
+
+ Map<String, Object> result = PropertyObjectUtils.toObject(props, "");
+ // @formatter:off
+ Map<String,Object> map =
+ Map.of("object",
+ Map.of("abc",
+ Map.of("ghi", "object.jkl")));
+ // @formatter:on
+ assertEquals(map, result);
+ }
+
+ @Test
+ public void testGetArray() {
+ // first value is primitive, while second is an array
+ Properties props = makeProperties("array.abc", "array.def", "array.abc[0].ghi", "array.jkl");
+
+ Map<String, Object> result = PropertyObjectUtils.toObject(props, "");
+ // @formatter:off
+ Map<String,Object> map =
+ Map.of("array",
+ Map.of("abc",
+ List.of(
+ Map.of("ghi", "array.jkl"))));
+ // @formatter:on
+ assertEquals(map, result);
+ }
+
+ @Test
+ @SuppressWarnings("unchecked")
+ public void testCompressLists() throws IOException, CoderException {
+ assertEquals("plain-string", PropertyObjectUtils.compressLists("plain-string").toString());
+
+ // @formatter:off
+ Map<String, Object> map =
+ Map.of(
+ "cmp.abc", "cmp.def",
+ "cmp.ghi",
+ Arrays.asList(null, "cmp.list1", null, "cmp.list2",
+ Map.of("cmp.map", Arrays.asList("cmp.map.list1", "cmp.map1.list2", null))));
+ // @formatter:on
+
+ // the data structure needs to be modifiable, so we'll encode/decode it
+ StandardCoder coder = new StandardCoder();
+ map = coder.decode(coder.encode(map), LinkedHashMap.class);
+
+ PropertyObjectUtils.compressLists(map);
+
+ // @formatter:off
+ Map<String, Object> expected =
+ Map.of(
+ "cmp.abc", "cmp.def",
+ "cmp.ghi",
+ Arrays.asList("cmp.list1", "cmp.list2",
+ Map.of("cmp.map", Arrays.asList("cmp.map.list1", "cmp.map1.list2"))));
+ // @formatter:on
+ assertEquals(expected, map);
+ }
+
+ /**
+ * Makes properties containing the specified key/value pairs. The property set returns
+ * names in the order listed.
+ *
+ * @return a new properties containing the specified key/value pairs
+ */
+ private Properties makeProperties(String key1, String value1, String key2, String value2) {
+ // control the order in which the names are returned
+ List<String> keyList = List.of(key1, key2);
+
+ Set<String> keySet = new AbstractSet<>() {
+ @Override
+ public Iterator<String> iterator() {
+ return keyList.iterator();
+ }
+
+ @Override
+ public int size() {
+ return 2;
+ }
+ };
+
+ Properties props = new Properties() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public Set<String> stringPropertyNames() {
+ return keySet;
+ }
+ };
+
+ props.putAll(Map.of(key1, value1, key2, value2));
+
+ return props;
+ }
+}
diff --git a/utils/src/test/java/org/onap/policy/common/utils/properties/exception/SupportBasicPropertyExceptionTester.java b/utils/src/test/java/org/onap/policy/common/utils/properties/exception/SupportBasicPropertyExceptionTester.java
index 97503f8c..f5842923 100644
--- a/utils/src/test/java/org/onap/policy/common/utils/properties/exception/SupportBasicPropertyExceptionTester.java
+++ b/utils/src/test/java/org/onap/policy/common/utils/properties/exception/SupportBasicPropertyExceptionTester.java
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -20,11 +20,9 @@
package org.onap.policy.common.utils.properties.exception;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertThat;
-
-import org.hamcrest.CoreMatchers;
/**
* Superclass used to test subclasses of {@link PropertyException}.
@@ -52,7 +50,7 @@ public class SupportBasicPropertyExceptionTester {
protected static final String FIELD = "PROPERTY";
/*
- * Methods to perform various tests on the except subclass.
+ * Methods to perform various tests on the except subclass.
*/
protected void doTestPropertyExceptionStringField_AllPopulated(PropertyException ex) {
@@ -98,7 +96,7 @@ public class SupportBasicPropertyExceptionTester {
/**
* Performs standard tests that should apply to all subclasses.
- *
+ *
* @param ex exception to test
*/
protected void standardTests(PropertyException ex) {
@@ -111,17 +109,17 @@ public class SupportBasicPropertyExceptionTester {
/**
* Performs standard tests for exceptions that were provided a message in their
* constructor.
- *
+ *
* @param ex exception to test
*/
protected void standardMessageTests(PropertyException ex) {
- assertThat(ex.getMessage(), CoreMatchers.endsWith(MESSAGE));
+ assertThat(ex.getMessage()).endsWith(MESSAGE);
}
/**
* Performs standard tests for exceptions that were provided a throwable in their
* constructor.
- *
+ *
* @param ex exception to test
*/
protected void standardThrowableTests(PropertyException ex) {