Merge "Changes for Checkstyle 8.32"
[policy/models.git] / models-base / src / test / java / org / onap / policy / models / base / PfUtilsTest.java
index 339ee9d..8659b4c 100644 (file)
 
 package org.onap.policy.models.base;
 
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertNull;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+import lombok.Getter;
+import lombok.ToString;
 import org.junit.Test;
 
 /**
@@ -36,13 +41,15 @@ import org.junit.Test;
  */
 public class PfUtilsTest {
 
+    private static final String HELLO = "hello";
+
     @Test
     public void testCompareObjects() {
         assertEquals(0, PfUtils.compareObjects(null, null));
-        assertEquals(-1, PfUtils.compareObjects("hello", null));
-        assertEquals(1, PfUtils.compareObjects(null, "hello"));
-        assertFalse(PfUtils.compareObjects("hello", "goodbye") == 0);
-        assertEquals(0, PfUtils.compareObjects("hello", "hello"));
+        assertEquals(-1, PfUtils.compareObjects(HELLO, null));
+        assertEquals(1, PfUtils.compareObjects(null, HELLO));
+        assertFalse(PfUtils.compareObjects(HELLO, "goodbye") == 0);
+        assertEquals(0, PfUtils.compareObjects(HELLO, HELLO));
     }
 
     @Test
@@ -50,13 +57,7 @@ public class PfUtilsTest {
         List<Object> resultList = PfUtils.mapList(null, item -> {
             throw new RuntimeException("should not be invoked");
         });
-        assertTrue(resultList.isEmpty());
-
-        // verify that we can modify the empty list without throwing an exception
-        resultList.add("xyz");
-        resultList.add("pdq");
-        resultList.remove("xyz");
-
+        assertNull(resultList);
 
         List<String> origList = Arrays.asList("abc", "def");
         List<String> newList = PfUtils.mapList(origList, text -> text + "X");
@@ -67,4 +68,54 @@ public class PfUtilsTest {
         newList.remove("abcX");
         newList.add("something else");
     }
+
+    @Test
+    public void testMapMap() {
+        Map<String, String> resultMap = PfUtils.mapMap(null, item -> {
+            throw new RuntimeException("should not be invoked");
+        });
+        assertNull(resultMap);
+
+        Map<String, String> origMap = new TreeMap<>();
+        origMap.put("key2A", "xyz2");
+        origMap.put("key2B", "pdq2");
+        Map<String, String> newMap = PfUtils.mapMap(origMap, text -> text + "X");
+
+        assertEquals("{key2A=xyz2X, key2B=pdq2X}", newMap.toString());
+
+        // verify that we can modify the map without throwing an exception
+        newMap.remove("abcX");
+        newMap.put("something", "else");
+    }
+
+    @Test
+    public void testMakeCopy() {
+        assertNull(PfUtils.makeCopy((MyObject) null));
+
+        MyObject origObject = new MyObject();
+        origObject.name = HELLO;
+        assertEquals(origObject.toString(), PfUtils.makeCopy(origObject).toString());
+
+        assertThatThrownBy(() -> PfUtils.makeCopy(new NoCopyConstructor())).isInstanceOf(PfModelRuntimeException.class);
+    }
+
+    @Getter
+    @ToString
+    private static class MyObject {
+        private String name;
+
+        public MyObject() {
+            // do nothing
+        }
+
+        @SuppressWarnings("unused")
+        public MyObject(MyObject source) {
+            this.name = source.name;
+        }
+    }
+
+    @Getter
+    private static class NoCopyConstructor {
+        private String name;
+    }
 }