package org.geotools.process.function; import static org.junit.Assert.*; import java.util.List; import java.util.Map; import org.geotools.factory.CommonFactoryFinder; import org.junit.Test; import org.opengis.filter.FilterFactory; import org.opengis.filter.expression.Function; public class ParameterFunctionTest { FilterFactory ff = CommonFactoryFinder.getFilterFactory(null); @Test public void testEmtpy() { Function param = ff.function("parameter"); try { param.evaluate(null); fail("This should have failed with an illegal argument exception"); } catch(IllegalArgumentException e) { // fine } } @Test public void testContext() { Object context = new Object(); Function param = ff.function("parameter", ff.literal("argument")); Map<String, Object> result = (Map<String, Object>) param.evaluate(context); assertEquals(1, result.size()); assertEquals("argument", result.keySet().iterator().next()); assertSame(context, result.values().iterator().next()); } @Test public void testOne() { Object value = new Object(); Function param = ff.function("parameter", ff.literal("argument"), ff.literal(value)); Map<String, Object> result = (Map<String, Object>) param.evaluate(null); assertEquals(1, result.size()); assertEquals("argument", result.keySet().iterator().next()); assertSame(value, result.values().iterator().next()); } @Test public void testMany() { Object value1 = new Object(); Object value2 = new Object(); Function param = ff.function("parameter", ff.literal("argument"), ff.literal(value1), ff.literal(value2)); Map<String, Object> result = (Map<String, Object>) param.evaluate(null); assertEquals(1, result.size()); assertEquals("argument", result.keySet().iterator().next()); List<Object> value = (List<Object>) result.values().iterator().next(); assertEquals(2, value.size()); assertSame(value1, value.get(0)); assertSame(value2, value.get(1)); } }