X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Fjackson%2FSimpleMapperTest.java;h=873139e674bf222ff5d3285a67c00264df125cf7;hb=b329dd6001752c05000a6a8f97923a740097bba0;hp=075acca0a254ccb8cf0475a579cc5d2964e158eb;hpb=dfdc6b81bce02386de2b4f6497ef78f15263c05d;p=simple-mapper diff --git a/src/test/java/de/juplo/jackson/SimpleMapperTest.java b/src/test/java/de/juplo/jackson/SimpleMapperTest.java index 075acca..873139e 100644 --- a/src/test/java/de/juplo/jackson/SimpleMapperTest.java +++ b/src/test/java/de/juplo/jackson/SimpleMapperTest.java @@ -4,15 +4,28 @@ import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonParser; import java.io.IOException; import java.io.InputStream; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; 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; +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; /** @@ -21,6 +34,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 +47,113 @@ public class SimpleMapperTest Spliterator 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 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> 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 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 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 +163,247 @@ public class SimpleMapperTest } @Test - public void testConvertEmptyInputToList() throws Exception + public void testConvertEmptyArrayToList() throws Exception { List list; - list = SimpleMapper.convertArray(get("/empty/1.json")); + list = SimpleMapper.convertArray(get("/array/empty/1.json")); assertEquals(0, list.size()); - list = SimpleMapper.convertArray(get("/empty/2.json")); + list = SimpleMapper.convertArray(get("/array/empty/2.json")); assertEquals(0, list.size()); - list = SimpleMapper.convertArray(get("/empty/3.json")); + list = SimpleMapper.convertArray(get("/array/empty/3.json")); assertEquals(0, list.size()); - list = SimpleMapper.convertArray(get("/empty/4.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> spliterator; - spliterator = SimpleMapper.getObjectSpliterator(get("/empty/1.json")); + spliterator = SimpleMapper.getObjectSpliterator(get("/object/empty/1.json")); assertFalse( "The created splitter should have no entries", spliterator.tryAdvance((Entry e) -> { fail("The consumer should never be called!"); })); - spliterator = SimpleMapper.getObjectSpliterator(get("/empty/2.json")); + spliterator = SimpleMapper.getObjectSpliterator(get("/object/empty/2.json")); assertFalse( "The created splitter should have no entries", spliterator.tryAdvance((Entry e) -> { fail("The consumer should never be called!"); })); - spliterator = SimpleMapper.getObjectSpliterator(get("/empty/3.json")); + spliterator = SimpleMapper.getObjectSpliterator(get("/object/empty/3.json")); assertFalse( "The created splitter should have no entries", spliterator.tryAdvance((Entry e) -> { fail("The consumer should never be called!"); })); - spliterator = SimpleMapper.getObjectSpliterator(get("/empty/4.json")); - assertFalse( - "The created splitter should have no entries", - spliterator.tryAdvance((Entry 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 e) -> @@ -126,37 +413,340 @@ public class SimpleMapperTest } @Test - public void testConvertEmptyInputToMap() throws Exception + public void testConvertEmptyObjectToMap() throws Exception { Map map; - map = SimpleMapper.convertObject(get("/empty/1.json")); - assertEquals(0, map.size()); - map = SimpleMapper.convertObject(get("/empty/2.json")); + map = SimpleMapper.convertObject(get("/object/empty/1.json")); assertEquals(0, map.size()); - map = SimpleMapper.convertObject(get("/empty/3.json")); + map = SimpleMapper.convertObject(get("/object/empty/2.json")); assertEquals(0, map.size()); - map = SimpleMapper.convertObject(get("/empty/4.json")); + map = SimpleMapper.convertObject(get("/object/empty/3.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()); + } + + + @Test + public void testConvertArrayToArraySpliterator() throws Exception + { + Spliterator spliterator; + + spliterator = SimpleMapper.getArraySpliterator(get("/array/1.json")); + checkArraySpliterator(spliterator); + spliterator = SimpleMapper.getArraySpliterator(get("/array/2.json")); + checkArraySpliterator(spliterator); + } + + void checkArraySpliterator(Spliterator spliterator) throws Exception + { + assertNotNull(spliterator); + + final ArrayList entries = new ArrayList<>(4); + for (int i = 0; i < 4; i++) + assertTrue( + "The created splitter should have a " + (i+1) + ". entry", + spliterator.tryAdvance((Object t) -> { entries.add(t); }) + ); + + assertFalse( + "The created splitter should have no more entries", + spliterator.tryAdvance((Object t) -> + { + fail("The consumer should not have been called"); + })); + + checkPartnerPageData(entries.get(3)); + } + + @Test + public void testConvertArrayToList() throws Exception + { + List list; + + list = SimpleMapper.convertArray(get("/array/1.json")); + assertNotNull(list); + assertEquals(4, list.size()); + checkPartnerPageData(list.get(3)); + list = SimpleMapper.convertArray(get("/array/2.json")); + assertNotNull(list); + assertEquals(4, list.size()); + checkPartnerPageData(list.get(3)); + } + + @Test + public void testConvertArrayToObjectSpliterator() throws Exception + { + try + { + SimpleMapper.getObjectSpliterator(get("/array/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/2.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 testConvertArrayToMap() throws Exception + { + try + { + SimpleMapper.convertObject(get("/array/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/2.json")); + fail("it must not be possible, to get a map for an array"); + } + catch(IllegalArgumentException e) + { + LOG.info(e.getMessage()); + } + } + + @Test + public void testConvertArray() throws Exception + { + Object object; + List list; + + object = SimpleMapper.convert(get("/array/1.json")); + assertNotNull(object); + assertTrue("the returned object should be a list", object instanceof List); + list = (List)object; + assertEquals(4, list.size()); + checkPartnerPageData(list.get(3)); + object = SimpleMapper.convert(get("/array/2.json")); + assertNotNull(object); + assertTrue("the returned object should be a list", object instanceof List); + list = (List)object; + assertEquals(4, list.size()); + checkPartnerPageData(list.get(3)); + } + + + @Test + public void testConvertObjectToArraySpliterator() throws Exception + { + try + { + SimpleMapper.getArraySpliterator(get("/object/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/2.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 testConvertObjectToList() throws Exception + { + try + { + SimpleMapper.convertArray(get("/object/1.json")); + fail("it must not be possible, to get a list for an object"); + } + catch(IllegalArgumentException e) + { + LOG.info(e.getMessage()); + } + + try + { + SimpleMapper.convertArray(get("/object/2.json")); + fail("it must not be possible, to get a list for an object"); + } + catch(IllegalArgumentException e) + { + LOG.info(e.getMessage()); + } + } + + @Test + public void testConvertObjectToObjectSpliterator() throws Exception + { + Spliterator> spliterator; + + spliterator = SimpleMapper.getObjectSpliterator(get("/object/1.json")); + checkObjectSpliterator(spliterator); + spliterator = SimpleMapper.getObjectSpliterator(get("/object/2.json")); + checkObjectSpliterator(spliterator); + } + + void checkObjectSpliterator(Spliterator> spliterator) + throws + Exception + { + assertNotNull(spliterator); + + final LinkedHashMap map = new LinkedHashMap<>(); + for (int i = 0; i < 4; i++) + assertTrue( + "The created splitter should have a " + (i+1) + ". entry", + spliterator.tryAdvance((Entry e) -> { + map.put(e.getKey(), e.getValue()); + })); + + assertFalse( + "The created splitter should have no more entries", + spliterator.tryAdvance((Object t) -> + { + fail("The consumer should not have been called"); + })); + + checkVariables(map); + } + + @Test + public void testConvertObjectToMap() throws Exception + { + Map map; + + map = SimpleMapper.convertObject(get("/object/1.json")); + assertNotNull(map); + assertEquals(4, map.size()); + checkVariables(map); + map = SimpleMapper.convertObject(get("/object/2.json")); + assertNotNull(map); + assertEquals(4, map.size()); + checkVariables(map); + } + + @Test + public void testConvertObject() throws Exception + { + Object object; + Map map; + + object = SimpleMapper.convert(get("/object/1.json")); + assertNotNull(object); + assertTrue("the returned object should be a map", object instanceof Map); + map = (Map)object; + assertEquals(4, map.size()); + checkVariables(map); + object = SimpleMapper.convert(get("/object/2.json")); + assertNotNull(object); + assertTrue("the returned object should be a map", object instanceof Map); + map = (Map)object; + assertEquals(4, map.size()); + checkVariables(map); + } + + void checkVariables(Map map) + { + Iterator> iterator = map.entrySet().iterator(); + Entry entry; + + assertTrue("The map should have a first element", iterator.hasNext()); + entry = iterator.next(); + assertEquals("bootstrap", entry.getKey()); + assertEquals("bootstrap.min.css", entry.getValue()); + + assertTrue("The map should have a second element", iterator.hasNext()); + entry = iterator.next(); + assertEquals("pages", entry.getKey()); + assertTrue( + "The pages-variable should be of type List", + entry.getValue() instanceof List + ); + assertEquals(4, ((List)entry.getValue()).size()); + checkPartnerPageData(((List)entry.getValue()).get(3)); + + assertTrue("The map should have a third element", iterator.hasNext()); + entry = iterator.next(); + assertEquals("footer", entry.getKey()); + assertTrue( + "The footer-variable should be of type List", + entry.getValue() instanceof List + ); + assertEquals(3, ((List)entry.getValue()).size()); + + assertTrue("The map should have a third element", iterator.hasNext()); + entry = iterator.next(); + assertEquals("sponsorship", entry.getKey()); + assertTrue( + "The sponsorship-variable should be of type List", + entry.getValue() instanceof List + ); + assertEquals(3, ((List)entry.getValue()).size()); + } + + + void checkPartnerPageData(Object page) + { + assertTrue("The page-data should be of type Map", page instanceof Map); + Map map = (Map)page; + assertEquals(4, map.size()); + assertEquals("/partner.html", map.get("uri")); + assertTrue( + "The page-data should have an entry \"children\" of type Map", + map.get("children") instanceof Map + ); + map = (Map)map.get("children"); + assertEquals(6, map.size()); + assertTrue( + "The children-map should haven an entry \"/partner/juplo.html\" of type Map", + map.get("/partner/juplo.html") instanceof Map + ); + map = (Map)map.get("/partner/juplo.html"); + assertEquals(2, map.size()); + assertEquals( + "Wir sind Unterstützer der Nerd-Plattform juplo.de", + map.get("title") + ); }