/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2012, Open Source Geospatial Foundation (OSGeo) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package org.geotools.filter.function.math; import junit.framework.TestCase; import org.geotools.factory.CommonFactoryFinder; import org.opengis.filter.FilterFactory; import org.opengis.filter.expression.Function; public class ModuloFunctionTest extends TestCase { private FilterFactory ff; private String functionName; protected void setUp() throws Exception { super.setUp(); ff = CommonFactoryFinder.getFilterFactory2(null); functionName = ModuloFunction.NAME.getName(); } public void testModuloInvalidInitNoArgs() { try { ff.function(functionName); } catch (RuntimeException e) { assertEquals("Unable to find function " + functionName, e.getMessage()); return; } fail("Exception not thrown"); } public void testModuloInvalidInitOneArg() { try { ff.function(functionName, ff.literal(13)); } catch (RuntimeException e) { assertEquals("Unable to find function " + functionName, e.getMessage()); return; } fail("Exception not thrown"); } public void testModuloInvalidInitThreeArgs() { try { ff.function(functionName, ff.literal(13), ff.literal(14), ff.literal(15)); } catch (RuntimeException e) { assertEquals("Unable to find function " + functionName, e.getMessage()); return; } fail("Exception not thrown"); } public void testModulo() { Function function = ff.function(functionName, ff.literal(13), ff.literal(4)); assertEquals(1, function.evaluate(null)); } public void testModuloNegativeDividend() { Function function = ff.function(functionName, ff.literal(-13), ff.literal(4)); assertEquals(3, function.evaluate(null)); } public void testModuloNegativeDivisor() { Function function = ff.function(functionName, ff.literal(13), ff.literal(-4)); assertEquals(-3, function.evaluate(null)); } public void testModuloFloat() { Function function = ff.function(functionName, ff.literal(13.6), ff.literal(4)); assertEquals(1, function.evaluate(null)); } public void testModuloOneDivisor() { Function function = ff.function(functionName, ff.literal(13), ff.literal(1)); assertEquals(0, function.evaluate(null)); } public void testModuloZeroDivisor() { Function function = ff.function(functionName, ff.literal(13), ff.literal(0)); try { function.evaluate(null); } catch (IllegalArgumentException e) { return; } fail("IllegalArgumentException not thrown"); } }