/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.wms.georss;
import static org.junit.Assert.assertEquals;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.geoserver.data.test.MockData;
import org.geoserver.wms.WMSMapContent;
import org.geoserver.wms.WMSTestSupport;
import org.geotools.data.Query;
import org.junit.Before;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class AtomGeoRSSTransformerTest extends WMSTestSupport {
static WMSMapContent map;
@Before
public void initializeMap() throws Exception {
map = new WMSMapContent(createGetMapRequest(MockData.BASIC_POLYGONS));
map.addLayer(createMapLayer(MockData.BASIC_POLYGONS));
}
@org.junit.Test
public void testLatLongInternal() throws Exception {
AtomGeoRSSTransformer tx = new AtomGeoRSSTransformer(getWMS());
tx.setGeometryEncoding(AtomGeoRSSTransformer.GeometryEncoding.LATLONG);
tx.setIndentation(2);
ByteArrayOutputStream output = new ByteArrayOutputStream();
tx.transform(map, output);
DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = docBuilder.parse(new ByteArrayInputStream(output.toByteArray()));
Element element = document.getDocumentElement();
assertEquals("feed", element.getNodeName());
NodeList entries = element.getElementsByTagName("entry");
int n = getFeatureSource(MockData.BASIC_POLYGONS).getCount(Query.ALL);
assertEquals(n, entries.getLength());
for (int i = 0; i < entries.getLength(); i++) {
Element entry = (Element) entries.item(i);
assertEquals(1, entry.getElementsByTagName("geo:lat").getLength());
assertEquals(1, entry.getElementsByTagName("geo:long").getLength());
}
}
@org.junit.Test
public void testLatLongWMS() throws Exception {
Document document = getAsDOM(
"wms/reflect?format_options=encoding:latlong&format=application/atom+xml&layers="
+ MockData.BASIC_POLYGONS.getPrefix() + ":" + MockData.BASIC_POLYGONS.getLocalPart()
);
Element element = document.getDocumentElement();
assertEquals("feed", element.getNodeName());
NodeList entries = element.getElementsByTagName("entry");
int n = getFeatureSource(MockData.BASIC_POLYGONS).getCount(Query.ALL);
assertEquals(n, entries.getLength());
for (int i = 0; i < entries.getLength(); i++) {
Element entry = (Element) entries.item(i);
assertEquals(1, entry.getElementsByTagName("geo:lat").getLength());
assertEquals(1, entry.getElementsByTagName("geo:long").getLength());
}
}
@org.junit.Test
public void testSimpleInternal() throws Exception {
AtomGeoRSSTransformer tx = new AtomGeoRSSTransformer(getWMS());
tx.setGeometryEncoding(AtomGeoRSSTransformer.GeometryEncoding.SIMPLE);
tx.setIndentation(2);
ByteArrayOutputStream output = new ByteArrayOutputStream();
tx.transform(map, output);
DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = docBuilder.parse(new ByteArrayInputStream(output.toByteArray()));
Element element = document.getDocumentElement();
assertEquals("feed", element.getNodeName());
NodeList entries = element.getElementsByTagName("entry");
int n = getFeatureSource(MockData.BASIC_POLYGONS).getCount(Query.ALL);
assertEquals(n, entries.getLength());
for (int i = 0; i < entries.getLength(); i++) {
Element entry = (Element) entries.item(i);
assertEquals(1, entry.getElementsByTagName("georss:where").getLength());
assertEquals(1, entry.getElementsByTagName("georss:polygon").getLength());
}
}
@org.junit.Test
public void testSimpleWMS() throws Exception {
Document document = getAsDOM(
"wms/reflect?format_options=encoding:simple&format=application/atom+xml&layers="
+ MockData.BASIC_POLYGONS.getPrefix() + ":" + MockData.BASIC_POLYGONS.getLocalPart()
);
Element element = document.getDocumentElement();
assertEquals("feed", element.getNodeName());
NodeList entries = element.getElementsByTagName("entry");
int n = getFeatureSource(MockData.BASIC_POLYGONS).getCount(Query.ALL);
assertEquals(n, entries.getLength());
for (int i = 0; i < entries.getLength(); i++) {
Element entry = (Element) entries.item(i);
assertEquals(1, entry.getElementsByTagName("georss:where").getLength());
assertEquals(1, entry.getElementsByTagName("georss:polygon").getLength());
}
}
@org.junit.Test
public void testGmlWMS() throws Exception {
Document document = getAsDOM(
"wms/reflect?format_options=encoding:gml&format=application/atom+xml&layers="
+ MockData.BASIC_POLYGONS.getPrefix() + ":" + MockData.BASIC_POLYGONS.getLocalPart()
);
Element element = document.getDocumentElement();
assertEquals("feed", element.getNodeName());
NodeList entries = element.getElementsByTagName("entry");
int n = getFeatureSource(MockData.BASIC_POLYGONS).getCount(Query.ALL);
assertEquals(n, entries.getLength());
for (int i = 0; i < entries.getLength(); i++) {
Element entry = (Element) entries.item(i);
assertEquals(1, entry.getElementsByTagName("georss:where").getLength());
assertEquals(1, entry.getElementsByTagName("gml:Polygon").getLength());
}
}
}