package org.geoserver.wms.responses.map.kml;
import java.util.Collections;
import javax.xml.namespace.QName;
import junit.framework.Test;
import org.geoserver.data.test.MockData;
import org.geoserver.wms.WMSTestSupport;
import org.vfny.geoserver.wms.responses.map.kml.OWS5MapProducerFactory;
import org.w3c.dom.Document;
public class ExtendedDataTest extends WMSTestSupport {
private static final QName ONLYGEOM = new QName(MockData.CITE_URI, "OnlyGeom",
MockData.CITE_PREFIX);
/**
* This is a READ ONLY TEST so we can use one time setup
*/
public static Test suite() {
return new OneTimeTestSetup(new ExtendedDataTest());
}
@Override
protected void populateDataDirectory(MockData dataDirectory) throws Exception {
dataDirectory.addWellKnownTypes(new QName[] { MockData.BUILDINGS });
dataDirectory.addPropertiesType(ONLYGEOM, getClass().getResource("OnlyGeom.properties"), Collections.EMPTY_MAP);
}
public void testDefaultOutput() throws Exception {
Document doc = getAsDOM("wms?request=getmap&service=wms&version=1.1.1" + "&format="
+ OWS5MapProducerFactory.FORMAT + "&layers=" + MockData.BUILDINGS.getPrefix()
+ ":" + MockData.BUILDINGS.getLocalPart()
+ "&height=1024&width=1024&bbox=-180,-90,180,90&featureid=Buildings.1107531701010");
print(doc);
// we should have just one feature
assertEquals(1, doc.getElementsByTagName("Placemark").getLength());
// gml3 encoding uses poslist instead of coordinates
// assertEquals(1, doc.getElementsByTagName("posList").getLength());
assertEquals(2, doc.getElementsByTagName("coordinates").getLength());
// by default we have style, but no extended data
assertEquals(1, doc.getElementsByTagName("Style").getLength());
assertEquals(0, doc.getElementsByTagName("Schema").getLength());
}
public void testExtendedDataNoStyle() throws Exception {
Document doc = getAsDOM("wms?request=getmap&service=wms&version=1.1.1" + "&format="
+ OWS5MapProducerFactory.FORMAT + "&layers=" + MockData.BUILDINGS.getPrefix()
+ ":" + MockData.BUILDINGS.getLocalPart()
+ "&height=1024&width=1024&bbox=-180,-90,180,90&featureid=Buildings.1107531701010"
+ "&format_options=extendedData:true;style:false");
// by default we have style, but no extended data
assertEquals(0, doc.getElementsByTagName("Style").getLength());
assertEquals(1, doc.getElementsByTagName("Schema").getLength());
assertEquals(2, doc.getElementsByTagName("SimpleField").getLength());
assertEquals(1, doc.getElementsByTagName("ExtendedData").getLength());
assertEquals(2, doc.getElementsByTagName("Data").getLength());
}
public void testExtendedDataStyle() throws Exception {
Document doc = getAsDOM("wms?request=getmap&service=wms&version=1.1.1" + "&format="
+ OWS5MapProducerFactory.FORMAT + "&layers=" + MockData.BUILDINGS.getPrefix()
+ ":" + MockData.BUILDINGS.getLocalPart()
+ "&height=1024&width=1024&bbox=-180,-90,180,90&featureid=Buildings.1107531701010"
+ "&format_options=extendedData:true;style:true");
// by default we have style, but no extended data
assertEquals(1, doc.getElementsByTagName("Style").getLength());
assertEquals(1, doc.getElementsByTagName("Schema").getLength());
assertEquals(2, doc.getElementsByTagName("SimpleField").getLength());
assertEquals(1, doc.getElementsByTagName("ExtendedData").getLength());
assertEquals(2, doc.getElementsByTagName("Data").getLength());
}
public void testExtendedDataNoAttributes() throws Exception {
Document doc = getAsDOM("wms?request=getmap&service=wms&version=1.1.1" + "&format="
+ OWS5MapProducerFactory.FORMAT + "&layers=" + ONLYGEOM.getPrefix()
+ ":" + ONLYGEOM.getLocalPart()
+ "&height=1024&width=1024&bbox=-180,-90,180,90&featureid=OnlyGeom.1107531493630"
+ "&format_options=extendedData:true");
// by default we have style, but no extended data
assertEquals(1, doc.getElementsByTagName("Schema").getLength());
assertEquals(0, doc.getElementsByTagName("SimpleField").getLength());
assertEquals(1, doc.getElementsByTagName("ExtendedData").getLength());
assertEquals(0, doc.getElementsByTagName("Data").getLength());
}
}