Sonar Fixes policy/models, removing model-yaml
[policy/models.git] / models-base / src / test / java / org / onap / policy / models / base / PfUtilsTest.java
index 11ddf31..f5f5ad0 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2019 Nordix Foundation.
- *  Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ *  Modifications 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.
 
 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.assertNotEquals;
+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 +42,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));
+        assertNotEquals(PfUtils.compareObjects(HELLO, "goodbye"), 0);
+        assertEquals(0, PfUtils.compareObjects(HELLO, HELLO));
     }
 
     @Test
@@ -50,11 +58,65 @@ public class PfUtilsTest {
         List<Object> resultList = PfUtils.mapList(null, item -> {
             throw new RuntimeException("should not be invoked");
         });
-        assertTrue(resultList.isEmpty());
+        assertNull(resultList);
 
         List<String> origList = Arrays.asList("abc", "def");
         List<String> newList = PfUtils.mapList(origList, text -> text + "X");
 
         assertEquals(Arrays.asList("abcX", "defX"), newList);
+
+        // verify that we can modify the list without throwing an exception
+        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));
+        NoCopyConstructor noCopyConstructor = new NoCopyConstructor();
+        MyObject origObject = new MyObject();
+        origObject.name = HELLO;
+        assertEquals(origObject.toString(), PfUtils.makeCopy(origObject).toString());
+
+        assertThatThrownBy(() -> PfUtils.makeCopy(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;
     }
 }