1 package de.juplo.jackson;
3 import com.fasterxml.jackson.core.JsonFactory;
4 import com.fasterxml.jackson.core.JsonParser;
5 import java.io.IOException;
6 import java.io.InputStream;
7 import java.util.ArrayList;
10 import java.util.Map.Entry;
11 import java.util.Spliterator;
12 import static org.junit.Assert.assertEquals;
13 import static org.junit.Assert.assertFalse;
14 import static org.junit.Assert.assertNotNull;
15 import static org.junit.Assert.assertNull;
16 import static org.junit.Assert.assertTrue;
17 import static org.junit.Assert.fail;
18 import org.junit.Test;
19 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory;
21 import static org.junit.Assert.assertEquals;
22 import static org.junit.Assert.assertFalse;
23 import static org.junit.Assert.assertNotNull;
24 import static org.junit.Assert.assertNull;
25 import static org.junit.Assert.assertTrue;
26 import static org.junit.Assert.fail;
33 public class SimpleMapperTest
35 private static final Logger LOG =
36 LoggerFactory.getLogger(SimpleMapperTest.class);
39 private final JsonFactory factory = new JsonFactory();
43 public void testConvertEmptyInputToArraySpliterator() throws Exception
45 Spliterator<Object> spliterator;
47 spliterator = SimpleMapper.getArraySpliterator(get("/empty/1.json"));
48 assertNull(spliterator);
49 spliterator = SimpleMapper.getArraySpliterator(get("/empty/2.json"));
50 assertNull(spliterator);
51 spliterator = SimpleMapper.getArraySpliterator(get("/empty/3.json"));
52 assertNull(spliterator);
53 spliterator = SimpleMapper.getArraySpliterator(get("/empty/4.json"));
54 assertNull(spliterator);
55 spliterator = SimpleMapper.getArraySpliterator(get("/empty/5.json"));
56 assertNull(spliterator);
60 public void testConvertEmptyInputToList() throws Exception
64 list = SimpleMapper.convertArray(get("/empty/1.json"));
66 list = SimpleMapper.convertArray(get("/empty/2.json"));
68 list = SimpleMapper.convertArray(get("/empty/3.json"));
70 list = SimpleMapper.convertArray(get("/empty/4.json"));
72 list = SimpleMapper.convertArray(get("/empty/5.json"));
77 public void testConvertEmptyInputToObjectSpliterator() throws Exception
79 Spliterator<Entry<String, Object>> spliterator;
81 spliterator = SimpleMapper.getObjectSpliterator(get("/empty/1.json"));
82 assertNull(spliterator);
83 spliterator = SimpleMapper.getObjectSpliterator(get("/empty/2.json"));
84 assertNull(spliterator);
85 spliterator = SimpleMapper.getObjectSpliterator(get("/empty/3.json"));
86 assertNull(spliterator);
87 spliterator = SimpleMapper.getObjectSpliterator(get("/empty/4.json"));
88 assertNull(spliterator);
89 spliterator = SimpleMapper.getObjectSpliterator(get("/empty/5.json"));
90 assertNull(spliterator);
94 public void testConvertEmptyInputToMap() throws Exception
96 Map<String, Object> map;
98 map = SimpleMapper.convertObject(get("/empty/1.json"));
100 map = SimpleMapper.convertObject(get("/empty/2.json"));
102 map = SimpleMapper.convertObject(get("/empty/3.json"));
104 map = SimpleMapper.convertObject(get("/empty/4.json"));
106 map = SimpleMapper.convertObject(get("/empty/5.json"));
111 public void testConvertEmptyInput() throws Exception
115 object = SimpleMapper.convert(get("/empty/1.json"));
117 object = SimpleMapper.convert(get("/empty/2.json"));
119 object = SimpleMapper.convert(get("/empty/3.json"));
121 object = SimpleMapper.convert(get("/empty/4.json"));
123 object = SimpleMapper.convert(get("/empty/5.json"));
129 public void testConvertEmptyArrayToArraySpliterator() throws Exception
131 Spliterator<Object> spliterator;
133 spliterator = SimpleMapper.getArraySpliterator(get("/array/empty/1.json"));
135 "The created splitter should have no entries",
136 spliterator.tryAdvance((Object t) ->
138 fail("The consumer should never be called!");
140 spliterator = SimpleMapper.getArraySpliterator(get("/array/empty/2.json"));
142 "The created splitter should have no entries",
143 spliterator.tryAdvance((Object t) ->
145 fail("The consumer should never be called!");
147 spliterator = SimpleMapper.getArraySpliterator(get("/array/empty/3.json"));
149 "The created splitter should have no entries",
150 spliterator.tryAdvance((Object t) ->
152 fail("The consumer should never be called!");
154 spliterator = SimpleMapper.getArraySpliterator(get("/array/empty/4.json"));
156 "The created splitter should have no entries",
157 spliterator.tryAdvance((Object t) ->
159 fail("The consumer should never be called!");
164 public void testConvertEmptyArrayToList() throws Exception
168 list = SimpleMapper.convertArray(get("/array/empty/1.json"));
169 assertEquals(0, list.size());
170 list = SimpleMapper.convertArray(get("/array/empty/2.json"));
171 assertEquals(0, list.size());
172 list = SimpleMapper.convertArray(get("/array/empty/3.json"));
173 assertEquals(0, list.size());
174 list = SimpleMapper.convertArray(get("/array/empty/4.json"));
175 assertEquals(0, list.size());
179 public void testConvertEmptyArrayToObjectSpliterator() throws Exception
183 SimpleMapper.getObjectSpliterator(get("/array/empty/1.json"));
184 fail("it must not be possible, to get an object-spliterator for an array");
186 catch(IllegalArgumentException e)
188 LOG.info(e.getMessage());
193 SimpleMapper.getObjectSpliterator(get("/array/empty/2.json"));
194 fail("it must not be possible, to get an object-spliterator for an array");
196 catch(IllegalArgumentException e)
198 LOG.info(e.getMessage());
203 SimpleMapper.getObjectSpliterator(get("/array/empty/3.json"));
204 fail("it must not be possible, to get an object-spliterator for an array");
206 catch(IllegalArgumentException e)
208 LOG.info(e.getMessage());
213 SimpleMapper.getObjectSpliterator(get("/array/empty/4.json"));
214 fail("it must not be possible, to get an object-spliterator for an array");
216 catch(IllegalArgumentException e)
218 LOG.info(e.getMessage());
223 public void testConvertEmptyArrayToMap() throws Exception
227 SimpleMapper.convertObject(get("/array/empty/1.json"));
228 fail("it must not be possible, to get a map for an array");
230 catch(IllegalArgumentException e)
232 LOG.info(e.getMessage());
237 SimpleMapper.convertObject(get("/array/empty/2.json"));
238 fail("it must not be possible, to get a map for an array");
240 catch(IllegalArgumentException e)
242 LOG.info(e.getMessage());
247 SimpleMapper.convertObject(get("/array/empty/3.json"));
248 fail("it must not be possible, to get a map for an array");
250 catch(IllegalArgumentException e)
252 LOG.info(e.getMessage());
257 SimpleMapper.convertObject(get("/array/empty/4.json"));
258 fail("it must not be possible, to get a map for an array");
260 catch(IllegalArgumentException e)
262 LOG.info(e.getMessage());
267 public void testConvertEmptyArray() throws Exception
271 object = SimpleMapper.convert(get("/array/empty/1.json"));
272 assertNotNull(object);
273 assertTrue("the returned object should be a list", object instanceof List);
274 assertEquals(0, ((List)object).size());
275 object = SimpleMapper.convert(get("/array/empty/2.json"));
276 assertNotNull(object);
277 assertTrue("the returned object should be a list", object instanceof List);
278 assertEquals(0, ((List)object).size());
279 object = SimpleMapper.convert(get("/array/empty/3.json"));
280 assertNotNull(object);
281 assertTrue("the returned object should be a list", object instanceof List);
282 assertEquals(0, ((List)object).size());
283 object = SimpleMapper.convert(get("/array/empty/4.json"));
284 assertNotNull(object);
285 assertTrue("the returned object should be a list", object instanceof List);
286 assertEquals(0, ((List)object).size());
291 public void testConvertEmptyObjectToArraySpliterator() throws Exception
295 SimpleMapper.getArraySpliterator(get("/object/empty/1.json"));
296 fail("it must not be possible, to get an array-spliterator for an object");
298 catch(IllegalArgumentException e)
300 LOG.info(e.getMessage());
305 SimpleMapper.getArraySpliterator(get("/object/empty/2.json"));
306 fail("it must not be possible, to get an array-spliterator for an object");
308 catch(IllegalArgumentException e)
310 LOG.info(e.getMessage());
315 SimpleMapper.getArraySpliterator(get("/object/empty/3.json"));
316 fail("it must not be possible, to get an array-spliterator for an object");
318 catch(IllegalArgumentException e)
320 LOG.info(e.getMessage());
325 SimpleMapper.getArraySpliterator(get("/object/empty/4.json"));
326 fail("it must not be possible, to get an array-spliterator for an object");
328 catch(IllegalArgumentException e)
330 LOG.info(e.getMessage());
335 public void testConvertEmptyObjectToList() throws Exception
339 SimpleMapper.convertArray(get("/object/empty/1.json"));
340 fail("it must not be possible, to get a list for an array");
342 catch(IllegalArgumentException e)
344 LOG.info(e.getMessage());
349 SimpleMapper.convertArray(get("/object/empty/2.json"));
350 fail("it must not be possible, to get a list for an array");
352 catch(IllegalArgumentException e)
354 LOG.info(e.getMessage());
359 SimpleMapper.convertArray(get("/object/empty/3.json"));
360 fail("it must not be possible, to get a list for an array");
362 catch(IllegalArgumentException e)
364 LOG.info(e.getMessage());
369 SimpleMapper.convertArray(get("/object/empty/4.json"));
370 fail("it must not be possible, to get a list for an array");
372 catch(IllegalArgumentException e)
374 LOG.info(e.getMessage());
379 public void testConvertEmptyObjectToObjectSpliterator() throws Exception
381 Spliterator<Entry<String, Object>> spliterator;
383 spliterator = SimpleMapper.getObjectSpliterator(get("/object/empty/1.json"));
385 "The created splitter should have no entries",
386 spliterator.tryAdvance((Entry<String, Object> e) ->
388 fail("The consumer should never be called!");
390 spliterator = SimpleMapper.getObjectSpliterator(get("/object/empty/2.json"));
392 "The created splitter should have no entries",
393 spliterator.tryAdvance((Entry<String, Object> e) ->
395 fail("The consumer should never be called!");
397 spliterator = SimpleMapper.getObjectSpliterator(get("/object/empty/3.json"));
399 "The created splitter should have no entries",
400 spliterator.tryAdvance((Entry<String, Object> e) ->
402 fail("The consumer should never be called!");
404 spliterator = SimpleMapper.getObjectSpliterator(get("/object/empty/4.json"));
406 "The created splitter should have no entries",
407 spliterator.tryAdvance((Entry<String, Object> e) ->
409 fail("The consumer should never be called!");
414 public void testConvertEmptyObjectToMap() throws Exception
416 Map<String, Object> map;
418 map = SimpleMapper.convertObject(get("/object/empty/1.json"));
419 assertEquals(0, map.size());
420 map = SimpleMapper.convertObject(get("/object/empty/2.json"));
421 assertEquals(0, map.size());
422 map = SimpleMapper.convertObject(get("/object/empty/3.json"));
423 assertEquals(0, map.size());
424 map = SimpleMapper.convertObject(get("/object/empty/4.json"));
425 assertEquals(0, map.size());
429 public void testConvertEmptyObject() throws Exception
433 object = SimpleMapper.convert(get("/object/empty/1.json"));
434 assertNotNull(object);
435 assertTrue("the returned object should be a list", object instanceof Map);
436 assertEquals(0, ((Map)object).size());
437 object = SimpleMapper.convert(get("/object/empty/2.json"));
438 assertNotNull(object);
439 assertTrue("the returned object should be a list", object instanceof Map);
440 assertEquals(0, ((Map)object).size());
441 object = SimpleMapper.convert(get("/object/empty/3.json"));
442 assertNotNull(object);
443 assertTrue("the returned object should be a list", object instanceof Map);
444 assertEquals(0, ((Map)object).size());
445 object = SimpleMapper.convert(get("/object/empty/4.json"));
446 assertNotNull(object);
447 assertTrue("the returned object should be a list", object instanceof Map);
448 assertEquals(0, ((Map)object).size());
453 public void testConvertArrayToArraySpliterator() throws Exception
455 Spliterator<Object> spliterator;
457 spliterator = SimpleMapper.getArraySpliterator(get("/array/1.json"));
458 checkArraySpliterator(spliterator);
459 spliterator = SimpleMapper.getArraySpliterator(get("/array/2.json"));
460 checkArraySpliterator(spliterator);
463 void checkArraySpliterator(Spliterator<Object> spliterator) throws Exception
465 assertNotNull(spliterator);
467 final ArrayList<Object> entries = new ArrayList<>(4);
468 for (int i = 0; i < 4; i++)
470 "The created splitter should have a " + (i+1) + ". entry",
471 spliterator.tryAdvance((Object t) -> { entries.add(t); })
475 "The created splitter should have no more entries",
476 spliterator.tryAdvance((Object t) ->
478 fail("The consumer should not have been called");
481 checkPartnerPageData(entries.get(3));
485 public void testConvertArrayToList() throws Exception
489 list = SimpleMapper.convertArray(get("/array/1.json"));
491 assertEquals(4, list.size());
492 checkPartnerPageData(list.get(3));
493 list = SimpleMapper.convertArray(get("/array/2.json"));
495 assertEquals(4, list.size());
496 checkPartnerPageData(list.get(3));
500 public void testConvertArrayToObjectSpliterator() throws Exception
504 SimpleMapper.getObjectSpliterator(get("/array/1.json"));
505 fail("it must not be possible, to get an object-spliterator for an array");
507 catch(IllegalArgumentException e)
509 LOG.info(e.getMessage());
514 SimpleMapper.getObjectSpliterator(get("/array/2.json"));
515 fail("it must not be possible, to get an object-spliterator for an array");
517 catch(IllegalArgumentException e)
519 LOG.info(e.getMessage());
524 public void testConvertArrayToMap() throws Exception
528 SimpleMapper.convertObject(get("/array/1.json"));
529 fail("it must not be possible, to get a map for an array");
531 catch(IllegalArgumentException e)
533 LOG.info(e.getMessage());
538 SimpleMapper.convertObject(get("/array/2.json"));
539 fail("it must not be possible, to get a map for an array");
541 catch(IllegalArgumentException e)
543 LOG.info(e.getMessage());
548 public void testConvertArray() throws Exception
553 object = SimpleMapper.convert(get("/array/1.json"));
554 assertNotNull(object);
555 assertTrue("the returned object should be a list", object instanceof List);
556 list = (List<Object>)object;
557 assertEquals(4, list.size());
558 checkPartnerPageData(list.get(3));
559 object = SimpleMapper.convert(get("/array/2.json"));
560 assertNotNull(object);
561 assertTrue("the returned object should be a list", object instanceof List);
562 list = (List<Object>)object;
563 assertEquals(4, list.size());
564 checkPartnerPageData(list.get(3));
567 void checkPartnerPageData(Object page)
569 assertTrue("The page-data should be of type Map", page instanceof Map);
570 Map<String, Object> map = (Map<String, Object>)page;
571 assertEquals(4, map.size());
572 assertEquals("/partner.html", map.get("uri"));
574 "The page-data should have an entry \"children\" of type Map",
575 map.get("children") instanceof Map
577 map = (Map<String, Object>)map.get("children");
578 assertEquals(6, map.size());
580 "The children-map should haven an entry \"/partner/juplo.html\" of type Map",
581 map.get("/partner/juplo.html") instanceof Map
583 map = (Map<String, Object>)map.get("/partner/juplo.html");
584 assertEquals(2, map.size());
586 "Wir sind Unterstützer der Nerd-Plattform juplo.de",
592 private JsonParser get(String resource) throws IOException
594 InputStream is = SimpleMapperTest.class.getResourceAsStream(resource);
595 return factory.createParser(is);