SLING-12136 - Removed code related to Dictionary that caused infinite loop.
Improved the code coverage of MapUtilTest.
Clearly no-one was using the Dictionary branch (or else they would have
experienced a Stack Overflow error), so there shouldn't be any backwards
compatibility issues.
diff --git a/src/main/java/org/apache/sling/hamcrest/MapUtil.java b/src/main/java/org/apache/sling/hamcrest/MapUtil.java
index a391c4e..e09339e 100644
--- a/src/main/java/org/apache/sling/hamcrest/MapUtil.java
+++ b/src/main/java/org/apache/sling/hamcrest/MapUtil.java
@@ -20,7 +20,6 @@
import java.util.Arrays;
import java.util.Collections;
-import java.util.Dictionary;
import java.util.HashMap;
import java.util.Map;
@@ -43,13 +42,8 @@
if (args == null || args.length == 0) {
return Collections.emptyMap();
}
- if (args.length == 1) {
- if (args[0] instanceof Map) {
- return (Map<String, Object>)args[0];
- }
- else if (args[0] instanceof Dictionary) {
- return toMap((Dictionary<String, Object>)args[0]);
- }
+ if (args.length == 1 && args[0] instanceof Map) {
+ return (Map<String, Object>)args[0];
}
if (args.length % 2 != 0) {
throw new IllegalArgumentException("args must be an even number of name/values:" + Arrays.asList(args));
diff --git a/src/test/java/org/apache/sling/hamcrest/MapUtilTest.java b/src/test/java/org/apache/sling/hamcrest/MapUtilTest.java
index 9257fbf..6ea1a34 100644
--- a/src/test/java/org/apache/sling/hamcrest/MapUtilTest.java
+++ b/src/test/java/org/apache/sling/hamcrest/MapUtilTest.java
@@ -20,6 +20,7 @@
import static org.junit.Assert.assertEquals;
+import java.util.Collections;
import java.util.Map;
import org.junit.Test;
@@ -28,11 +29,44 @@
public class MapUtilTest {
- @Test
+ private static final ImmutableMap<String, Object> EXPECTED_MAP = ImmutableMap.<String, Object>of("param1", "var1", "param2", 123, "param3", true);
+
+ @Test
public void testMapObjectVarargs() {
Map<String, Object> convertedMap = MapUtil.toMap("param1", "var1", "param2", 123, "param3", true);
- assertEquals(ImmutableMap.<String, Object>of("param1", "var1", "param2", 123, "param3", true), convertedMap);
+ assertEquals(EXPECTED_MAP, convertedMap);
}
-
+
+ @Test
+ public void testMapObjectMap() {
+ Map<String, Object> convertedMap = MapUtil.toMap(EXPECTED_MAP);
+
+ assertEquals(EXPECTED_MAP, convertedMap);
+ }
+
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testMapObjectVarArgs_NotMap() {
+ MapUtil.toMap("param1", "var1", "param2", 123, "param3");
+ }
+
+ @Test
+ public void testMapObjectVarargs_EmptyArgs() {
+ Map<String, Object> convertedMap = MapUtil.toMap();
+
+ assertEquals(Collections.emptyMap(), convertedMap);
+ }
+
+ @Test
+ public void testMapObjectVarargs_Null() {
+ Map<String, Object> convertedMap = MapUtil.toMap((Object[])null);
+
+ assertEquals(Collections.emptyMap(), convertedMap);
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testMapObjectVarArgs_OddNumberOfArgs() {
+ MapUtil.toMap("param1", "var1", "param2", 123, "param3");
+ }
}