package org.geoserver.script.py;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.geoserver.script.wps.ScriptProcessFactory;
import org.geoserver.script.wps.ScriptProcessTestSupport;
import org.geotools.data.Parameter;
import org.opengis.feature.type.Name;
import com.vividsolutions.jts.geom.Geometry;
public class PyExtraMetadataTest extends ScriptProcessTestSupport {
@Override
public String getExtension() {
return "py";
}
@Override
public String getProcessName() {
return "buffer-ex";
}
public void testName() throws Exception {
ScriptProcessFactory pf = new ScriptProcessFactory(scriptMgr);
assertEquals(1, pf.getNames().size());
Name name = pf.getNames().iterator().next();
assertEquals("buffer-ex", name.getLocalPart());
}
public void testInputs() throws Exception {
ScriptProcessFactory pf = new ScriptProcessFactory(scriptMgr);
Name buffer = pf.getNames().iterator().next();
Map<String, Parameter<?>> inputs = pf.getParameterInfo(buffer);
assertNotNull(inputs);
assertEquals(4, inputs.size());
checkParameter(inputs, "geom", Geometry.class, "The geometry to buffer", 1, 1);
checkParameter(inputs, "distance", Number.class, "The buffer distance", 1, 1);
Parameter<?> capStyle = checkParameter(inputs, "capStyle", String.class,
"The style of buffer endings", 0, 1);
assertEquals("round", capStyle.sample);
List<String> options = (List<String>) capStyle.metadata.get(Parameter.OPTIONS);
assertNotNull(options);
assertEquals(Arrays.asList("round", "flat", "square"), options);
Parameter<?> quadrantSegments = checkParameter(inputs, "quadrantSegments", Integer.class,
"Number of segments", 0, 1);
assertEquals(8, quadrantSegments.sample);
}
public Parameter<?> checkParameter(Map<String, Parameter<?>> parameters, String name,
Class type,
String description, int minOccurs, int maxOccurs) {
assertTrue(parameters.containsKey(name));
Parameter<?> param = parameters.get(name);
assertTrue(type.isAssignableFrom(param.type));
assertEquals(description, param.description.toString());
assertEquals(minOccurs, param.minOccurs);
assertEquals(maxOccurs, param.maxOccurs);
return param;
}
}