import com.fasterxml.jackson.core.JsonParser;
import java.io.IOException;
import java.io.InputStream;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
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;
/**
}
+ @Test
+ public void testConvertArrayToArraySpliterator() throws Exception
+ {
+ Spliterator<Object> spliterator;
+
+ spliterator = SimpleMapper.getArraySpliterator(get("/array/1.json"));
+ checkArraySpliterator(spliterator);
+ spliterator = SimpleMapper.getArraySpliterator(get("/array/2.json"));
+ checkArraySpliterator(spliterator);
+ }
+
+ void checkArraySpliterator(Spliterator<Object> spliterator) throws Exception
+ {
+ assertNotNull(spliterator);
+
+ final ArrayList<Object> 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<Object> 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<Object> list;
+
+ object = SimpleMapper.convert(get("/array/1.json"));
+ assertNotNull(object);
+ assertTrue("the returned object should be a list", object instanceof List);
+ list = (List<Object>)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>)object;
+ assertEquals(4, list.size());
+ checkPartnerPageData(list.get(3));
+ }
+
+ void checkPartnerPageData(Object page)
+ {
+ assertTrue("The page-data should be of type Map", page instanceof Map);
+ Map<String, Object> map = (Map<String, Object>)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<String, Object>)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<String, Object>)map.get("/partner/juplo.html");
+ assertEquals(2, map.size());
+ assertEquals(
+ "Wir sind Unterstützer der Nerd-Plattform juplo.de",
+ map.get("title")
+ );
+ }
+
+
private JsonParser get(String resource) throws IOException
{
InputStream is = SimpleMapperTest.class.getResourceAsStream(resource);