/* (c) 2016 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.wps.gs;
import org.geoserver.data.test.MockData;
import org.geoserver.data.test.SystemTestData;
import org.geoserver.wps.WPSTestSupport;
import org.junit.Test;
import org.w3c.dom.Document;
import javax.xml.namespace.QName;
import java.util.HashMap;
import static org.custommonkey.xmlunit.XMLAssert.assertXpathEvaluatesTo;
import static org.custommonkey.xmlunit.XMLAssert.assertXpathExists;
import static org.junit.Assert.assertEquals;
public class FeatureClassStatsTest extends WPSTestSupport {
public static QName STATES = new QName(MockData.DEFAULT_URI, "states", MockData.DEFAULT_PREFIX);
@Override
protected void onSetUp(SystemTestData testData) throws Exception {
super.onSetUp(testData);
testData.addVectorLayer(STATES, new HashMap<>(), "states.properties", getClass(), getCatalog());
}
@Test
public void testClassStats() throws Exception {
String xml =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<wps:Execute version=\"1.0.0\" service=\"WPS\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
" xmlns=\"http://www.opengis.net/wps/1.0.0\" " +
" xmlns:wfs=\"http://www.opengis.net/wfs\" " +
" xmlns:wps=\"http://www.opengis.net/wps/1.0.0\" " +
" xmlns:ows=\"http://www.opengis.net/ows/1.1\" " +
" xmlns:xlink=\"http://www.w3.org/1999/xlink\" " +
" xsi:schemaLocation=\"http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd\">" +
" <ows:Identifier>vec:FeatureClassStats</ows:Identifier>" +
" <wps:DataInputs>" +
" <wps:Input>" +
" <ows:Identifier>features</ows:Identifier>" +
" <wps:Reference mimeType=\"text/xml\" xlink:href=\"http://geoserver/wfs\" method=\"POST\">" +
" <wps:Body>" +
" <wfs:GetFeature service=\"WFS\" version=\"1.0.0\" outputFormat=\"GML2\" xmlns:topp=\"http://www.openplans.org/topp\">" +
" <wfs:Query typeName=\"gs:states\"/>" +
" </wfs:GetFeature>" +
" </wps:Body>" +
" </wps:Reference>" +
" </wps:Input>" +
" <wps:Input>" +
" <ows:Identifier>attribute</ows:Identifier>" +
" <wps:Data>" +
" <wps:LiteralData>persons</wps:LiteralData>" +
" </wps:Data>" +
" </wps:Input>" +
" <wps:Input>" +
" <ows:Identifier>stats</ows:Identifier>" +
" <wps:Data>" +
" <wps:LiteralData>mean</wps:LiteralData>" +
" </wps:Data>" +
" </wps:Input>" +
" <wps:Input>" +
" <ows:Identifier>method</ows:Identifier>" +
" <wps:Data>" +
" <wps:LiteralData>QUANTILE</wps:LiteralData>" +
" </wps:Data>" +
" </wps:Input>" +
" <wps:Input>"+
" <ows:Identifier>classes</ows:Identifier>"+
" <wps:Data>"+
" <wps:LiteralData>2</wps:LiteralData>"+
" </wps:Data>"+
" </wps:Input>"+
" </wps:DataInputs>" +
" <wps:ResponseForm>" +
" <wps:RawDataOutput mimeType=\"text/xml\">" +
" <ows:Identifier>results</ows:Identifier>" +
" </wps:RawDataOutput>" +
" </wps:ResponseForm>" +
"</wps:Execute>";
Document dom = postAsDOM(root(), xml);
//print(dom);
assertEquals("Results", dom.getDocumentElement().getNodeName());
assertXpathExists("//Class", dom);
assertXpathEvaluatesTo("2", "count(//Class)", dom);
assertXpathEvaluatesTo("2", "count(//Class[@count='5'])", dom);
}
}