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);
--- /dev/null
+
+ [
+
+ {
+ "uri": "/leistungen.html",
+ "name": "Leistungen",
+ "title": "Überblick über alle Vorteile unserer Veranstaltungskalender-Lösung",
+ "children": {
+
+
+ "/leistungen.html": {
+ "name": "Unser Produkt",
+ "title": "Überblick über alle Vorteile unserer Veranstaltungskalender-Lösung"
+ },
+ "/leistungen/durchdacht--durchdachte-und-erprobte-benutzeroberfläche.html": {
+ "name": "Durchdacht",
+ "title": "Lernen Sie, warum unser Produkt ein Magnet für Ihre Benutzer ist"
+ },
+ "/leistungen/optimiert--umfassende-und-effektive-seo-strategie.html": {
+ "name": "Optimiert",
+ "title": "Lernen Sie, wie unser Produkt neue Benutzer auf Ihre Website aufmerksam macht"
+ },
+ "/leistungen/flexibel--kosten-kontrollieren-und-risiken-minimieren.html": {
+ "name": "Flexibel",
+ "title": "Lernen Sie, wie Sie Ihre Website flexibel managen können und dabei die Kosten und Risiken stets unter Kontrolle haben"
+ },
+ "/leistungen/zukunftssicher-anpassungsfähig-rückwärtskompatibel-ausbaufähig.html": {
+ "name": "Zukunftssicher",
+ "title": "Lernen Sie, wie Sie Ihre Website mit Hilfe unseres Produkts Zukunftssicher, Anpassungsfähig, Rückwärtskompatibel und Ausbaufähig machen können"
+ },
+ "/leistungen/einfach--kinderleichte-integration-in-ihre-website-und-ihren-workflow.html": {
+ "name": "Einfach",
+ "title": "Lernen Sie, wie Sie mit unserem Produkt modernste Technologie im Handumdrehen in Ihre Website und Ihren Wrkflow integrieren können"
+ }
+ }
+ },
+ {
+ "uri": "/referenzen.html",
+ "name": "Referenzen",
+ "title": "Übersicht über unsere Referenzen",
+ "children": {
+ "/referenzen.html": {
+ "name": "Übersicht",
+ "title": "Übersicht über unsere Referenzen"
+ },
+ "/referenzen/coolibri.html": {
+ "name": "coolibri.de",
+ "title": "Wir haben zusammen mit und im Auftrag der coolibri GmbH den erfolgreichen Online-Veranstaltungskalender coolibri.de entwickelt"
+ },
+ "/referenzen/leitmarktwettbewerb-createmedia-nrw.html": {
+ "name": "CreateMedia.NRW",
+ "title": "yourSHOUTER ist einer der Gewinner des Leitmarktwettbewerbs CreateMedia.NRW",
+ "icon": "efre"
+ }
+ }
+ },
+ {
+ "uri": "/projekte.html",
+ "name": "Projekte",
+ "title": "Übersicht über geplante, aktuelle und abgeschlossene Projekte",
+ "children": {
+ "/projekte.html": {
+ "name": "Übersicht",
+ "title": "Übersicht über geplante, aktuelle und abgeschlossene Projekte"
+ },
+ "/projekte/ihr-veranstaltungskalender-aus-der-cloud.html": {
+ "name": "Kalender 3.0",
+ "title": "Wier entwickeln und betreiben eine moderne Veranstaltungskalender-Oberfläche, die Sie als Cloud-Ansendung im Handumdrehen in Ihre Website integrieren können"
+ },
+ "/projekte/crowdgestützte-veranstaltungs-suchmaschine.html": {
+ "name": "Veranstaltungs-Suchmaschine",
+ "title": "Wir entwickeln eine vertikale Suchmaschine für Veranstaltungs- und Locationdaten auf Basis einer deutschlandweiten, themenübergreifenden, mit Hilfe von crowdgestütztem maschinellen Lernen aufgebauten Datenbank"
+ },
+ "/projekte/hibernate4-maven-plugin.html": {
+ "name": "Hibernate Maven Plugin",
+ "title": "Wier haben ein Maven-Plugin entwickelnt, mit dem sich die Generierung von Datenbank-Schemata aus Hibernate-Mappings steuern und automatisieren lässt"
+ }
+ }
+ },
+ {
+ "uri": "/partner.html",
+ "name": "Partner",
+ "title": "Unsere Partner, Unterstützer und Förderer",
+ "children": {
+ "/partner.html": {
+ "name": "Übersicht",
+ "title": "Unsere Partner, Unterstützer und Förderer"
+ },
+ "/partner/coolibri.html": {
+ "name": "coolibri",
+ "title": "Wir entwickeln zusammen mit der coolibri GmbH eine optimale, cloud-basierte Oberfläche für Veranstaltungskalender"
+ },
+ "/partner/rce.html": {
+ "name": "RCE",
+ "title": "Wir arbeiten zusammen mit der RCE Medien GmbH an der Vereinfachung der Erfassung und Verbreitung Ihrer Veranstaltungsdaten"
+ },
+ "/partner/juplo.html": {
+ "name": "juplo",
+ "title": "Wir sind Unterstützer der Nerd-Plattform juplo.de"
+ },
+ "/partner/mweimh-nrw.html": {
+ "name": "MWEIMH.NRW",
+ "title": "yourSHOUTER wurde von dem Ministerium für Wirtschaft, Energie, Industire, Mittelstand und Handwerk des Landes Nordhrein-Westfalen zur Förderung ausgewählt",
+ "icon": "nrw"
+ },
+ "/partner/efre--europäischer-fonds-für-regionale-entwicklung.html": {
+ "name": "EFRE.NRW",
+ "title": "yourSHOUTER erhält eine Förderung aus den Mitteln des Europäischen Fonds für Regionale Entwicklung (EFRE) - Zielbereich Investitionen in Wachstum und Beschäftigung",
+ "icon": "eu"
+ }
+ }
+ }
+ ]
--- /dev/null
+[{"uri":"/leistungen.html","name":"Leistungen","title":"Überblick über alle Vorteile unserer Veranstaltungskalender-Lösung","children":{"/leistungen.html":{"name":"Unser Produkt","title":"Überblick über alle Vorteile unserer Veranstaltungskalender-Lösung"},"/leistungen/durchdacht--durchdachte-und-erprobte-benutzeroberfläche.html":{"name":"Durchdacht","title":"Lernen Sie,warum unser Produkt ein Magnet für Ihre Benutzer ist"},"/leistungen/optimiert--umfassende-und-effektive-seo-strategie.html":{"name":"Optimiert","title":"Lernen Sie,wie unser Produkt neue Benutzer auf Ihre Website aufmerksam macht"},"/leistungen/flexibel--kosten-kontrollieren-und-risiken-minimieren.html":{"name":"Flexibel","title":"Lernen Sie,wie Sie Ihre Website flexibel managen können und dabei die Kosten und Risiken stets unter Kontrolle haben"},"/leistungen/zukunftssicher-anpassungsfähig-rückwärtskompatibel-ausbaufähig.html":{"name":"Zukunftssicher","title":"Lernen Sie,wie Sie Ihre Website mit Hilfe unseres Produkts Zukunftssicher,Anpassungsfähig,Rückwärtskompatibel und Ausbaufähig machen können"},"/leistungen/einfach--kinderleichte-integration-in-ihre-website-und-ihren-workflow.html":{"name":"Einfach","title":"Lernen Sie,wie Sie mit unserem Produkt modernste Technologie im Handumdrehen in Ihre Website und Ihren Wrkflow integrieren können"}}},{"uri":"/referenzen.html","name":"Referenzen","title":"Übersicht über unsere Referenzen","children":{"/referenzen.html":{"name":"Übersicht","title":"Übersicht über unsere Referenzen"},"/referenzen/coolibri.html":{"name":"coolibri.de","title":"Wir haben zusammen mit und im Auftrag der coolibri GmbH den erfolgreichen Online-Veranstaltungskalender coolibri.de entwickelt"},"/referenzen/leitmarktwettbewerb-createmedia-nrw.html":{"name":"CreateMedia.NRW","title":"yourSHOUTER ist einer der Gewinner des Leitmarktwettbewerbs CreateMedia.NRW","icon":"efre"}}},{"uri":"/projekte.html","name":"Projekte","title":"Übersicht über geplante,aktuelle und abgeschlossene Projekte","children":{"/projekte.html":{"name":"Übersicht","title":"Übersicht über geplante,aktuelle und abgeschlossene Projekte"},"/projekte/ihr-veranstaltungskalender-aus-der-cloud.html":{"name":"Kalender 3.0","title":"Wier entwickeln und betreiben eine moderne Veranstaltungskalender-Oberfläche,die Sie als Cloud-Ansendung im Handumdrehen in Ihre Website integrieren können"},"/projekte/crowdgestützte-veranstaltungs-suchmaschine.html":{"name":"Veranstaltungs-Suchmaschine","title":"Wir entwickeln eine vertikale Suchmaschine für Veranstaltungs- und Locationdaten auf Basis einer deutschlandweiten,themenübergreifenden,mit Hilfe von crowdgestütztem maschinellen Lernen aufgebauten Datenbank"},"/projekte/hibernate4-maven-plugin.html":{"name":"Hibernate Maven Plugin","title":"Wier haben ein Maven-Plugin entwickelnt,mit dem sich die Generierung von Datenbank-Schemata aus Hibernate-Mappings steuern und automatisieren lässt"}}},{"uri":"/partner.html","name":"Partner","title":"Unsere Partner,Unterstützer und Förderer","children":{"/partner.html":{"name":"Übersicht","title":"Unsere Partner,Unterstützer und Förderer"},"/partner/coolibri.html":{"name":"coolibri","title":"Wir entwickeln zusammen mit der coolibri GmbH eine optimale,cloud-basierte Oberfläche für Veranstaltungskalender"},"/partner/rce.html":{"name":"RCE","title":"Wir arbeiten zusammen mit der RCE Medien GmbH an der Vereinfachung der Erfassung und Verbreitung Ihrer Veranstaltungsdaten"},"/partner/juplo.html":{"name":"juplo","title":"Wir sind Unterstützer der Nerd-Plattform juplo.de"},"/partner/mweimh-nrw.html":{"name":"MWEIMH.NRW","title":"yourSHOUTER wurde von dem Ministerium für Wirtschaft,Energie,Industire,Mittelstand und Handwerk des Landes Nordhrein-Westfalen zur Förderung ausgewählt","icon":"nrw"},"/partner/efre--europäischer-fonds-für-regionale-entwicklung.html":{"name":"EFRE.NRW","title":"yourSHOUTER erhält eine Förderung aus den Mitteln des Europäischen Fonds für Regionale Entwicklung (EFRE) - Zielbereich Investitionen in Wachstum und Beschäftigung","icon":"eu"}}}]