package org.geoserver.python.process;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.io.FileUtils;
import org.geoserver.platform.GeoServerResourceLoader;
import org.geoserver.python.Python;
import org.geotools.data.Parameter;
import org.junit.BeforeClass;
import org.junit.Test;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Point;
public class PythonProcessAdapterTest {
static Python py;
static PythonProcessAdapter adapter;
@BeforeClass
public static void setUpData() throws Exception {
GeoServerResourceLoader loader = new GeoServerResourceLoader(new File("target"));
py = new Python(loader);
File f = new File("target", "foo_process.py");
FileUtils.copyURLToFile(PythonProcessAdapterTest.class.getResource("foo_process.py"), f);
adapter = new PythonProcessAdapter(f, py);
}
@Test
public void testGetNames() {
assertTrue(adapter.getNames().contains("foo"));
}
@Test
public void testGetVersion() {
assertEquals("1.2.3", adapter.getVersion("foo"));
}
@Test
public void testGetTitle() throws Exception {
assertEquals("Foo", adapter.getTitle("foo"));
}
@Test
public void testGetDescription() throws Exception {
assertEquals("The foo process", adapter.getDescription("foo"));
}
@Test
public void testGetInputParameters() throws Exception {
Map<String,Parameter<?>> inputs = adapter.getInputParameters("foo");
Parameter p = inputs.get("bar");
assertNotNull(p);
assertEquals("bar", p.key);
assertEquals("bar", p.title.toString());
assertEquals("The bar parameter", p.description.toString());
assertEquals(String.class, p.type);
p = inputs.get("baz");
assertNotNull(p);
assertEquals("baz", p.key);
assertEquals("baz", p.title.toString());
assertEquals("The baz parameter", p.description.toString());
assertEquals(Object.class, p.type);
p = inputs.get("bam");
assertNotNull(p);
assertEquals("bam", p.key);
assertEquals("bam", p.title.toString());
assertEquals("The bam parameter", p.description.toString());
assertEquals(Point.class, p.type);
}
@Test
public void testGetOutputParameters() throws Exception {
Map<String,Parameter<?>> outputs = adapter.getOutputParameters("foo");
Parameter p = outputs.get("result");
assertNotNull(p);
assertEquals("result", p.key);
assertEquals("result", p.title.toString());
assertEquals("The result", p.description.toString());
assertEquals(Double.class, p.type);
}
@Test
public void testRun() throws Exception {
HashMap<String,Object> inputs = new HashMap();
inputs.put("bar", "hello");
inputs.put("baz", new Object());
inputs.put("bam", new GeometryFactory().createPoint(new Coordinate(0,0)));
Map<String,Object> result = adapter.run("foo", inputs);
assertEquals(new Double(1.2), result.get("result"));
}
}