This is an automated email from the ASF dual-hosted git repository.

aledsage pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git

commit 8f11da59c266f885a1223e509230d89fb7ab96e3
Author: Paul Campbell <paul.campb...@cloudsoft.io>
AuthorDate: Tue Oct 9 16:38:52 2018 +0100

    [common] Add unit tests for Reflections#findMappedName{AndLog,Maybe}()
    
    Full coverage unit tests for these two methods.
---
 .../brooklyn/util/javalang/ReflectionsTest.java    | 125 ++++++++++++++++++++-
 1 file changed, 122 insertions(+), 3 deletions(-)

diff --git 
a/utils/common/src/test/java/org/apache/brooklyn/util/javalang/ReflectionsTest.java
 
b/utils/common/src/test/java/org/apache/brooklyn/util/javalang/ReflectionsTest.java
index 3c628a9..554ad96 100644
--- 
a/utils/common/src/test/java/org/apache/brooklyn/util/javalang/ReflectionsTest.java
+++ 
b/utils/common/src/test/java/org/apache/brooklyn/util/javalang/ReflectionsTest.java
@@ -24,12 +24,12 @@ import static org.testng.Assert.assertTrue;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
 
 import org.apache.brooklyn.util.javalang.coerce.CommonAdaptorTypeCoercions;
 import org.apache.brooklyn.util.javalang.coerce.TypeCoercer;
 import org.apache.brooklyn.util.javalang.coerce.TypeCoercerExtensible;
+import org.assertj.core.api.WithAssertions;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
@@ -38,7 +38,7 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 
-public class ReflectionsTest {
+public class ReflectionsTest implements WithAssertions {
 
     @Test
     public void testFindPublicMethodsOrderedBySuper() throws Exception {
@@ -229,6 +229,125 @@ public class ReflectionsTest {
         Assert.assertEquals(Reflections.getAllInterfaces(C.class), 
ImmutableList.of(M.class, K.class, I.class, J.class, L.class));
     }
 
+    /**
+     * Tests for {@link Reflections#findMappedNameAndLog(Map, String)} and
+     * {@link Reflections#findMappedNameMaybe(Map, String)} methods.
+     */
+    public class FindMappedName {
+
+        @Test
+        public void givenRenamesIsNullThenReturnOriginalName() {
+            //given
+            final Map<String, String> renames = null;
+            final String originalName = createAName();
+            //when
+            final String result = Reflections.findMappedNameAndLog(renames, 
originalName);
+            //then
+            assertThat(result).isEqualTo(originalName);
+        }
+
+        @Test
+        public void givenRenamesIsEmptyThenReturnOriginalName() {
+            //given
+            final Map<String, String> renames = new HashMap<>();
+            final String originalName = createAName();
+            //when
+            final String result = Reflections.findMappedNameAndLog(renames, 
originalName);
+            //then
+            assertThat(result).isEqualTo(originalName);
+        }
+
+        @Test
+        public void givenRenamesHasNoMatchThenReturnOriginalName() {
+            //given
+            final Map<String, String> renames = new HashMap<>();
+            renames.put(createAName(), createAName());
+            final String originalName = createAName();
+            //when
+            final String result = Reflections.findMappedNameAndLog(renames, 
originalName);
+            //then
+            assertThat(result).isEqualTo(originalName);
+        }
+
+        @Test
+        public void givenRenamesHasMatchThenReturnUpdatedName() {
+            //given
+            final Map<String, String> renames = new HashMap<>();
+            final String originalName = createAName();
+            final String updatedName = createAName();
+            renames.put(originalName, updatedName);
+            //when
+            final String result = Reflections.findMappedNameAndLog(renames, 
originalName);
+            //then
+            assertThat(result).isEqualTo(updatedName);
+        }
+
+        @Test
+        public void givenInnerClassHasNoMatchThenReturnOriginalName() {
+            //given
+            final Map<String, String> renames = new HashMap<>();
+            final String originalName = createAName() + "$" + createAName();
+            //when
+            final String result = Reflections.findMappedNameAndLog(renames, 
originalName);
+            //then
+            assertThat(result).isEqualTo(originalName);
+        }
+
+        @Test
+        public void givenInnerClassHasMatchThenReturnUpdatedName() {
+            //given
+            final Map<String, String> renames = new HashMap<>();
+            final String originalName = createAName() + "$" + createAName();
+            final String updatedName = createAName();
+            renames.put(originalName, updatedName);
+            //when
+            final String result = Reflections.findMappedNameAndLog(renames, 
originalName);
+            //then
+            assertThat(result).isEqualTo(updatedName);
+        }
+
+        @Test
+        public void 
givenInnerClassWhenOnlyOuterClassHasMatchThenReturnUpdatedName() {
+            //given
+            final Map<String, String> renames = new HashMap<>();
+            final String originalOuterClass = createAName();
+            final String originalInnerClass = createAName();
+            final String originalName = originalOuterClass + "$" + 
originalInnerClass;
+            final String updatedOuterClass = createAName();
+            final String updatedName = updatedOuterClass + "$" + 
originalInnerClass;
+            renames.put(originalOuterClass, updatedOuterClass);
+            //when
+            final String result = Reflections.findMappedNameAndLog(renames, 
originalName);
+            //then
+            assertThat(result).isEqualTo(updatedName);
+        }
+
+        @Test
+        public void 
givenInnerClassWhenOuterAndInnerClassHasMatchThenReturnInnerClassUpdatedName() {
+            //given
+            final Map<String, String> renames = new HashMap<>();
+            // the outer class has been renamed
+            final String originalOuterClass = createAName();
+            final String updatedOuterClass = createAName();
+            renames.put(originalOuterClass, updatedOuterClass);
+            // the inner class has an explicit rename to a different outer 
class
+            final String originalInnerClass = createAName();
+            final String originalName = originalOuterClass + "$" + 
originalInnerClass;
+            final String updatedName = createAName() + "$" + createAName();
+            renames.put(originalName, updatedName);
+            //when
+            final String result = Reflections.findMappedNameAndLog(renames, 
originalName);
+            //then
+            // the explicit rename overrides the outer class rename
+            assertThat(result).isEqualTo(updatedName);
+        }
+
+        private String createAName() {
+            return UUID.randomUUID().toString();
+        }
+
+    }
+
     public static abstract class PublicSuperClass {
         public abstract void methodOnSuperClass();
     }

Reply via email to