/*
* Geotoolkit.org - An Open Source Java GIS Toolkit
* http://www.geotoolkit.org
*
* (C) 2012, Geomatys
*
* 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.geotoolkit.image.interpolation;
import java.awt.Rectangle;
import org.junit.Assert;
import static org.junit.Assert.*;
import org.junit.Test;
/**
* Test NeighborInterpolation class.
*
* @author Rémi Maréchal (Geomatys).
*/
public class NeighborTest extends InterpolationTest {
public NeighborTest() {
super();
super.interpol = new NeighborInterpolation(pixIterator, null);
}
@Test
public void lowLCornerTest() {
// Sample interpolation
double resulTest = interpol.interpolate(-1, -1, 0);
assertEquals("lowLCornerTest : at coordinate : (-1, -1)", 0, resulTest, TOLERANCE);
resulTest = interpol.interpolate(0.4, -0.6, 0);
assertEquals("lowLCornerTest : at coordinate : (0.4, -0.6)", 1, resulTest, TOLERANCE);
resulTest = interpol.interpolate(-0.7, 0.4, 0);
assertEquals("lowLCornerTest : at coordinate : (-0.7, 0.4)", 3, resulTest, TOLERANCE);
resulTest = interpol.interpolate(0.4, 0.2, 0);
assertEquals("lowLCornerTest : at coordinate : (0.4, 0.2)", 4, resulTest, TOLERANCE);
// Pixel interpolation
resulTest = interpol.interpolate(-1, -1)[0];
assertEquals("lowLCornerTest : at coordinate : (-1, -1)", 0, resulTest, TOLERANCE);
resulTest = interpol.interpolate(0.4, -0.6)[0];
assertEquals("lowLCornerTest : at coordinate : (0.4, -0.6)", 1, resulTest, TOLERANCE);
resulTest = interpol.interpolate(-0.7, 0.4)[0];
assertEquals("lowLCornerTest : at coordinate : (-0.7, 0.4)", 3, resulTest, TOLERANCE);
resulTest = interpol.interpolate(0.4, 0.2)[0];
assertEquals("lowLCornerTest : at coordinate : (0.4, 0.2)", 4, resulTest, TOLERANCE);
}
@Test
public void lowRCornerTest() {
// Sample interpolation
double resulTest = interpol.interpolate(0.2, -1.1, 0);
assertEquals("lowRCornerTest : at coordinate : (0.2, -1.1)", 1, resulTest, TOLERANCE);
resulTest = interpol.interpolate(0.9, -1.1, 0);
assertEquals("lowRCornerTest : at coordinate : (0.9, -1.1)", 2, resulTest, TOLERANCE);
resulTest = interpol.interpolate(1.2, -0.1, 0);
assertEquals("lowRCornerTest : at coordinate : (1.2, -0.1)", 5, resulTest, TOLERANCE);
resulTest = interpol.interpolate(-0.1, -0.3, 0);
assertEquals("lowRCornerTest : at coordinate : (-0.1, -0.3)", 4, resulTest, TOLERANCE);
// Pixel interpolation
resulTest = interpol.interpolate(0.2, -1.1)[0];
assertEquals("lowRCornerTest : at coordinate : (0.2, -1.1)", 1, resulTest, TOLERANCE);
resulTest = interpol.interpolate(0.9, -1.1)[0];
assertEquals("lowRCornerTest : at coordinate : (0.9, -1.1)", 2, resulTest, TOLERANCE);
resulTest = interpol.interpolate(1.2, -0.1)[0];
assertEquals("lowRCornerTest : at coordinate : (1.2, -0.1)", 5, resulTest, TOLERANCE);
resulTest = interpol.interpolate(-0.1, -0.3)[0];
assertEquals("lowRCornerTest : at coordinate : (-0.1, -0.3)", 4, resulTest, TOLERANCE);
}
@Test
public void uppLCornerTest() {
// Sample interpolation
double resulTest = interpol.interpolate(-0.7, 1.1, 0);
assertEquals("uppLCornerTest : at coordinate : (-0.7, 1.1)", 6, resulTest, TOLERANCE);
resulTest = interpol.interpolate(-0.1, 1.1, 0);
assertEquals("uppLCornerTest : at coordinate : (-0.1, 1.1)", 7, resulTest, TOLERANCE);
resulTest = interpol.interpolate(-1.2, 0.1, 0);
assertEquals("uppLCornerTest : at coordinate : (-1.2, 0.1)", 3, resulTest, TOLERANCE);
resulTest = interpol.interpolate(-0.4, -0.3, 0);
assertEquals("uppLCornerTest : at coordinate : (-0.4, -0.3)", 4, resulTest, TOLERANCE);
// Pixel interpolation
resulTest = interpol.interpolate(-0.7, 1.1)[0];
assertEquals("uppLCornerTest : at coordinate : (-0.7, 1.1)", 6, resulTest, TOLERANCE);
resulTest = interpol.interpolate(-0.1, 1.1)[0];
assertEquals("uppLCornerTest : at coordinate : (-0.1, 1.1)", 7, resulTest, TOLERANCE);
resulTest = interpol.interpolate(-1.2, 0.1)[0];
assertEquals("uppLCornerTest : at coordinate : (-1.2, 0.1)", 3, resulTest, TOLERANCE);
resulTest = interpol.interpolate(-0.4, -0.3)[0];
assertEquals("uppLCornerTest : at coordinate : (-0.4, -0.3)", 4, resulTest, TOLERANCE);
}
@Test
public void uppRCornerTest() {
// Sample interpolation
double resulTest = interpol.interpolate(1.2, 0.1, 0);
assertEquals("uppRCornerTest : at coordinate : (1.2, 0.1)", 5, resulTest, TOLERANCE);
resulTest = interpol.interpolate(0.9, 1.1, 0);
assertEquals("uppRCornerTest : at coordinate : (0.9, 1.1)", 8, resulTest, TOLERANCE);
resulTest = interpol.interpolate(0.2, 0.9, 0);
assertEquals("uppRCornerTest : at coordinate : (0.2, 0.9)", 7, resulTest, TOLERANCE);
resulTest = interpol.interpolate(-0.1, -0.3, 0);
assertEquals("uppRCornerTest : at coordinate : (-0.1, -0.3)", 4, resulTest, TOLERANCE);
// Pixel interpolation
resulTest = interpol.interpolate(1.2, 0.1)[0];
assertEquals("uppRCornerTest : at coordinate : (1.2, 0.1)", 5, resulTest, TOLERANCE);
resulTest = interpol.interpolate(0.9, 1.1)[0];
assertEquals("uppRCornerTest : at coordinate : (0.9, 1.1)", 8, resulTest, TOLERANCE);
resulTest = interpol.interpolate(0.2, 0.9)[0];
assertEquals("uppRCornerTest : at coordinate : (0.2, 0.9)", 7, resulTest, TOLERANCE);
resulTest = interpol.interpolate(-0.1, -0.3)[0];
assertEquals("uppRCornerTest : at coordinate : (-0.1, -0.3)", 4, resulTest, TOLERANCE);
}
@Test
public void minMaxTest() {
double[] minMax = interpol.getMinMaxValue(null);
assertTrue(minMax[0] == 0);
assertTrue(minMax[1] == -1);//x-- coordinate
assertTrue(minMax[2] == -1);//y-- coordinate
assertTrue(minMax[3] == 8);
assertTrue(minMax[4] == 1);//x-- coordinate
assertTrue(minMax[5] == 1);//y-- coordinate
assertTrue(minMax == interpol.getMinMaxValue(null));
try {
interpol.getMinMaxValue(new Rectangle(-2, -1, 3, 3));
Assert.fail("test should had failed");
} catch(Exception e) {
//ok
}
}
}