Implemented tests for the handling of empty objects
[simple-mapper] / src / test / java / de / juplo / jackson / SimpleMapperTest.java
index 075acca..aad4709 100644 (file)
@@ -10,9 +10,13 @@ import java.util.Map.Entry;
 import java.util.Spliterator;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -21,6 +25,10 @@ import org.junit.Test;
  */
 public class SimpleMapperTest
 {
+  private static final Logger LOG =
+      LoggerFactory.getLogger(SimpleMapperTest.class);
+
+
   private final JsonFactory factory = new JsonFactory();
 
 
@@ -30,34 +38,113 @@ public class SimpleMapperTest
     Spliterator<Object> spliterator;
 
     spliterator = SimpleMapper.getArraySpliterator(get("/empty/1.json"));
-    assertFalse(
-        "The created splitter should have no entries",
-        spliterator.tryAdvance((Object t) ->
-        {
-          fail("The consumer should never be called!");
-        }));
+    assertNull(spliterator);
     spliterator = SimpleMapper.getArraySpliterator(get("/empty/2.json"));
+    assertNull(spliterator);
+    spliterator = SimpleMapper.getArraySpliterator(get("/empty/3.json"));
+    assertNull(spliterator);
+    spliterator = SimpleMapper.getArraySpliterator(get("/empty/4.json"));
+    assertNull(spliterator);
+    spliterator = SimpleMapper.getArraySpliterator(get("/empty/5.json"));
+    assertNull(spliterator);
+  }
+
+  @Test
+  public void testConvertEmptyInputToList() throws Exception
+  {
+    List<Object> list;
+
+    list = SimpleMapper.convertArray(get("/empty/1.json"));
+    assertNull(list);
+    list = SimpleMapper.convertArray(get("/empty/2.json"));
+    assertNull(list);
+    list = SimpleMapper.convertArray(get("/empty/3.json"));
+    assertNull(list);
+    list = SimpleMapper.convertArray(get("/empty/4.json"));
+    assertNull(list);
+    list = SimpleMapper.convertArray(get("/empty/5.json"));
+    assertNull(list);
+  }
+
+  @Test
+  public void testConvertEmptyInputToObjectSpliterator() throws Exception
+  {
+    Spliterator<Entry<String, Object>> spliterator;
+
+    spliterator = SimpleMapper.getObjectSpliterator(get("/empty/1.json"));
+    assertNull(spliterator);
+    spliterator = SimpleMapper.getObjectSpliterator(get("/empty/2.json"));
+    assertNull(spliterator);
+    spliterator = SimpleMapper.getObjectSpliterator(get("/empty/3.json"));
+    assertNull(spliterator);
+    spliterator = SimpleMapper.getObjectSpliterator(get("/empty/4.json"));
+    assertNull(spliterator);
+    spliterator = SimpleMapper.getObjectSpliterator(get("/empty/5.json"));
+    assertNull(spliterator);
+  }
+
+  @Test
+  public void testConvertEmptyInputToMap() throws Exception
+  {
+    Map<String, Object> map;
+
+    map = SimpleMapper.convertObject(get("/empty/1.json"));
+    assertNull(map);
+    map = SimpleMapper.convertObject(get("/empty/2.json"));
+    assertNull(map);
+    map = SimpleMapper.convertObject(get("/empty/3.json"));
+    assertNull(map);
+    map = SimpleMapper.convertObject(get("/empty/4.json"));
+    assertNull(map);
+    map = SimpleMapper.convertObject(get("/empty/5.json"));
+    assertNull(map);
+  }
+
+  @Test
+  public void testConvertEmptyInput() throws Exception
+  {
+    Object object;
+
+    object = SimpleMapper.convert(get("/empty/1.json"));
+    assertNull(object);
+    object = SimpleMapper.convert(get("/empty/2.json"));
+    assertNull(object);
+    object = SimpleMapper.convert(get("/empty/3.json"));
+    assertNull(object);
+    object = SimpleMapper.convert(get("/empty/4.json"));
+    assertNull(object);
+    object = SimpleMapper.convert(get("/empty/5.json"));
+    assertNull(object);
+  }
+
+
+  @Test
+  public void testConvertEmptyArrayToArraySpliterator() throws Exception
+  {
+    Spliterator<Object> spliterator;
+
+    spliterator = SimpleMapper.getArraySpliterator(get("/array/empty/1.json"));
     assertFalse(
         "The created splitter should have no entries",
         spliterator.tryAdvance((Object t) ->
         {
           fail("The consumer should never be called!");
         }));
-    spliterator = SimpleMapper.getArraySpliterator(get("/empty/3.json"));
+    spliterator = SimpleMapper.getArraySpliterator(get("/array/empty/2.json"));
     assertFalse(
         "The created splitter should have no entries",
         spliterator.tryAdvance((Object t) ->
         {
           fail("The consumer should never be called!");
         }));
-    spliterator = SimpleMapper.getArraySpliterator(get("/empty/4.json"));
+    spliterator = SimpleMapper.getArraySpliterator(get("/array/empty/3.json"));
     assertFalse(
         "The created splitter should have no entries",
         spliterator.tryAdvance((Object t) ->
         {
           fail("The consumer should never be called!");
         }));
-    spliterator = SimpleMapper.getArraySpliterator(get("/empty/5.json"));
+    spliterator = SimpleMapper.getArraySpliterator(get("/array/empty/4.json"));
     assertFalse(
         "The created splitter should have no entries",
         spliterator.tryAdvance((Object t) ->
@@ -67,56 +154,247 @@ public class SimpleMapperTest
   }
 
   @Test
-  public void testConvertEmptyInputToList() throws Exception
+  public void testConvertEmptyArrayToList() throws Exception
   {
     List<Object> list;
 
-    list = SimpleMapper.convertArray(get("/empty/1.json"));
-    assertEquals(0, list.size());
-    list = SimpleMapper.convertArray(get("/empty/2.json"));
+    list = SimpleMapper.convertArray(get("/array/empty/1.json"));
     assertEquals(0, list.size());
-    list = SimpleMapper.convertArray(get("/empty/3.json"));
+    list = SimpleMapper.convertArray(get("/array/empty/2.json"));
     assertEquals(0, list.size());
-    list = SimpleMapper.convertArray(get("/empty/4.json"));
+    list = SimpleMapper.convertArray(get("/array/empty/3.json"));
     assertEquals(0, list.size());
-    list = SimpleMapper.convertArray(get("/empty/5.json"));
+    list = SimpleMapper.convertArray(get("/array/empty/4.json"));
     assertEquals(0, list.size());
   }
 
   @Test
-  public void testConvertEmptyInputToObjectSpliterator() throws Exception
+  public void testConvertEmptyArrayToObjectSpliterator() throws Exception
+  {
+    try
+    {
+      SimpleMapper.getObjectSpliterator(get("/array/empty/1.json"));
+      fail("it must not be possible, to get an object-spliterator for an array");
+    }
+    catch(IllegalArgumentException e)
+    {
+      LOG.info(e.getMessage());
+    }
+
+    try
+    {
+      SimpleMapper.getObjectSpliterator(get("/array/empty/2.json"));
+      fail("it must not be possible, to get an object-spliterator for an array");
+    }
+    catch(IllegalArgumentException e)
+    {
+      LOG.info(e.getMessage());
+    }
+
+    try
+    {
+      SimpleMapper.getObjectSpliterator(get("/array/empty/3.json"));
+      fail("it must not be possible, to get an object-spliterator for an array");
+    }
+    catch(IllegalArgumentException e)
+    {
+      LOG.info(e.getMessage());
+    }
+
+    try
+    {
+      SimpleMapper.getObjectSpliterator(get("/array/empty/4.json"));
+      fail("it must not be possible, to get an object-spliterator for an array");
+    }
+    catch(IllegalArgumentException e)
+    {
+      LOG.info(e.getMessage());
+    }
+  }
+
+  @Test
+  public void testConvertEmptyArrayToMap() throws Exception
+  {
+    try
+    {
+      SimpleMapper.convertObject(get("/array/empty/1.json"));
+      fail("it must not be possible, to get a map for an array");
+    }
+    catch(IllegalArgumentException e)
+    {
+      LOG.info(e.getMessage());
+    }
+
+    try
+    {
+      SimpleMapper.convertObject(get("/array/empty/2.json"));
+      fail("it must not be possible, to get a map for an array");
+    }
+    catch(IllegalArgumentException e)
+    {
+      LOG.info(e.getMessage());
+    }
+
+    try
+    {
+      SimpleMapper.convertObject(get("/array/empty/3.json"));
+      fail("it must not be possible, to get a map for an array");
+    }
+    catch(IllegalArgumentException e)
+    {
+      LOG.info(e.getMessage());
+    }
+
+    try
+    {
+      SimpleMapper.convertObject(get("/array/empty/4.json"));
+      fail("it must not be possible, to get a map for an array");
+    }
+    catch(IllegalArgumentException e)
+    {
+      LOG.info(e.getMessage());
+    }
+  }
+
+  @Test
+  public void testConvertEmptyArray() throws Exception
+  {
+    Object object;
+
+    object = SimpleMapper.convert(get("/array/empty/1.json"));
+    assertNotNull(object);
+    assertTrue("the returned object should be a list", object instanceof List);
+    assertEquals(0, ((List)object).size());
+    object = SimpleMapper.convert(get("/array/empty/2.json"));
+    assertNotNull(object);
+    assertTrue("the returned object should be a list", object instanceof List);
+    assertEquals(0, ((List)object).size());
+    object = SimpleMapper.convert(get("/array/empty/3.json"));
+    assertNotNull(object);
+    assertTrue("the returned object should be a list", object instanceof List);
+    assertEquals(0, ((List)object).size());
+    object = SimpleMapper.convert(get("/array/empty/4.json"));
+    assertNotNull(object);
+    assertTrue("the returned object should be a list", object instanceof List);
+    assertEquals(0, ((List)object).size());
+  }
+
+
+  @Test
+  public void testConvertEmptyObjectToArraySpliterator() throws Exception
+  {
+    try
+    {
+      SimpleMapper.getArraySpliterator(get("/object/empty/1.json"));
+      fail("it must not be possible, to get an array-spliterator for an object");
+    }
+    catch(IllegalArgumentException e)
+    {
+      LOG.info(e.getMessage());
+    }
+
+    try
+    {
+      SimpleMapper.getArraySpliterator(get("/object/empty/2.json"));
+      fail("it must not be possible, to get an array-spliterator for an object");
+    }
+    catch(IllegalArgumentException e)
+    {
+      LOG.info(e.getMessage());
+    }
+
+    try
+    {
+      SimpleMapper.getArraySpliterator(get("/object/empty/3.json"));
+      fail("it must not be possible, to get an array-spliterator for an object");
+    }
+    catch(IllegalArgumentException e)
+    {
+      LOG.info(e.getMessage());
+    }
+
+    try
+    {
+      SimpleMapper.getArraySpliterator(get("/object/empty/4.json"));
+      fail("it must not be possible, to get an array-spliterator for an object");
+    }
+    catch(IllegalArgumentException e)
+    {
+      LOG.info(e.getMessage());
+    }
+  }
+
+  @Test
+  public void testConvertEmptyObjectToList() throws Exception
+  {
+    try
+    {
+      SimpleMapper.convertArray(get("/object/empty/1.json"));
+      fail("it must not be possible, to get a list for an array");
+    }
+    catch(IllegalArgumentException e)
+    {
+      LOG.info(e.getMessage());
+    }
+
+    try
+    {
+      SimpleMapper.convertArray(get("/object/empty/2.json"));
+      fail("it must not be possible, to get a list for an array");
+    }
+    catch(IllegalArgumentException e)
+    {
+      LOG.info(e.getMessage());
+    }
+
+    try
+    {
+      SimpleMapper.convertArray(get("/object/empty/3.json"));
+      fail("it must not be possible, to get a list for an array");
+    }
+    catch(IllegalArgumentException e)
+    {
+      LOG.info(e.getMessage());
+    }
+
+    try
+    {
+      SimpleMapper.convertArray(get("/object/empty/4.json"));
+      fail("it must not be possible, to get a list for an array");
+    }
+    catch(IllegalArgumentException e)
+    {
+      LOG.info(e.getMessage());
+    }
+  }
+
+  @Test
+  public void testConvertEmptyObjectToObjectSpliterator() throws Exception
   {
     Spliterator<Entry<String, Object>> spliterator;
 
-    spliterator = SimpleMapper.getObjectSpliterator(get("/empty/1.json"));
-    assertFalse(
-        "The created splitter should have no entries",
-        spliterator.tryAdvance((Entry<String, Object> e) ->
-        {
-          fail("The consumer should never be called!");
-        }));
-    spliterator = SimpleMapper.getObjectSpliterator(get("/empty/2.json"));
+    spliterator = SimpleMapper.getObjectSpliterator(get("/object/empty/1.json"));
     assertFalse(
         "The created splitter should have no entries",
         spliterator.tryAdvance((Entry<String, Object> e) ->
         {
           fail("The consumer should never be called!");
         }));
-    spliterator = SimpleMapper.getObjectSpliterator(get("/empty/3.json"));
+    spliterator = SimpleMapper.getObjectSpliterator(get("/object/empty/2.json"));
     assertFalse(
         "The created splitter should have no entries",
         spliterator.tryAdvance((Entry<String, Object> e) ->
         {
           fail("The consumer should never be called!");
         }));
-    spliterator = SimpleMapper.getObjectSpliterator(get("/empty/4.json"));
+    spliterator = SimpleMapper.getObjectSpliterator(get("/object/empty/3.json"));
     assertFalse(
         "The created splitter should have no entries",
         spliterator.tryAdvance((Entry<String, Object> e) ->
         {
           fail("The consumer should never be called!");
         }));
-    spliterator = SimpleMapper.getObjectSpliterator(get("/empty/5.json"));
+    spliterator = SimpleMapper.getObjectSpliterator(get("/object/empty/4.json"));
     assertFalse(
         "The created splitter should have no entries",
         spliterator.tryAdvance((Entry<String, Object> e) ->
@@ -126,37 +404,41 @@ public class SimpleMapperTest
   }
 
   @Test
-  public void testConvertEmptyInputToMap() throws Exception
+  public void testConvertEmptyObjectToMap() throws Exception
   {
     Map<String, Object> map;
 
-    map = SimpleMapper.convertObject(get("/empty/1.json"));
+    map = SimpleMapper.convertObject(get("/object/empty/1.json"));
     assertEquals(0, map.size());
-    map = SimpleMapper.convertObject(get("/empty/2.json"));
+    map = SimpleMapper.convertObject(get("/object/empty/2.json"));
     assertEquals(0, map.size());
-    map = SimpleMapper.convertObject(get("/empty/3.json"));
+    map = SimpleMapper.convertObject(get("/object/empty/3.json"));
     assertEquals(0, map.size());
-    map = SimpleMapper.convertObject(get("/empty/4.json"));
-    assertEquals(0, map.size());
-    map = SimpleMapper.convertObject(get("/empty/5.json"));
+    map = SimpleMapper.convertObject(get("/object/empty/4.json"));
     assertEquals(0, map.size());
   }
 
   @Test
-  public void testConvertEmptyInput() throws Exception
+  public void testConvertEmptyObject() throws Exception
   {
     Object object;
 
-    object = SimpleMapper.convert(get("/empty/1.json"));
-    assertNull(object);
-    object = SimpleMapper.convert(get("/empty/2.json"));
-    assertNull(object);
-    object = SimpleMapper.convert(get("/empty/3.json"));
-    assertNull(object);
-    object = SimpleMapper.convert(get("/empty/4.json"));
-    assertNull(object);
-    object = SimpleMapper.convert(get("/empty/5.json"));
-    assertNull(object);
+    object = SimpleMapper.convert(get("/object/empty/1.json"));
+    assertNotNull(object);
+    assertTrue("the returned object should be a list", object instanceof Map);
+    assertEquals(0, ((Map)object).size());
+    object = SimpleMapper.convert(get("/object/empty/2.json"));
+    assertNotNull(object);
+    assertTrue("the returned object should be a list", object instanceof Map);
+    assertEquals(0, ((Map)object).size());
+    object = SimpleMapper.convert(get("/object/empty/3.json"));
+    assertNotNull(object);
+    assertTrue("the returned object should be a list", object instanceof Map);
+    assertEquals(0, ((Map)object).size());
+    object = SimpleMapper.convert(get("/object/empty/4.json"));
+    assertNotNull(object);
+    assertTrue("the returned object should be a list", object instanceof Map);
+    assertEquals(0, ((Map)object).size());
   }