You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by al...@apache.org on 2019/01/16 16:40:18 UTC
[brooklyn-server] 06/31: [common] Add unit tests for
Reflections#findMappedName{AndLog, Maybe}()
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 <pa...@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();
}