/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2004-2008, 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.geometry.iso.util.algorithmND;
import junit.framework.TestCase;
import org.geotools.geometry.iso.util.algorithmND.AlgoPointND;
public class AlgoPointNDTest extends TestCase {
public void testWorkingAlgos() {
this._test3D();
}
public void testNotWorkingYetAlgos() {
//this._testNotWorkingAlgorithms();
}
/**
* Test methods for three dimensional space
*/
private void _test3D() {
// NOTE:
// Some asserts must be rounded, because of the floating-point rounding errors
double[] c1 = new double[]{0, 0, 0};
double[] c2 = new double[]{50, 50, 50};
double[] c3 = new double[]{100, 100, 100};
double[] c4 = new double[]{150, 150, 150};
double[] c5 = new double[]{200, 200, 200};
double[] c6 = new double[]{150, 150.000000001, 150};
double[] erg = null;
erg = AlgoPointND.add(c6, c6);
assertTrue(erg[0] == 300);
assertTrue(erg[1] == 300.000000002);
assertTrue(erg[2] == 300);
// add(double[], double[]) : double[]
erg = AlgoPointND.add(c1, c2);
assertTrue(erg[0] == 50);
assertTrue(erg[1] == 50);
assertTrue(erg[2] == 50);
erg = AlgoPointND.add(erg, c6);
assertTrue(erg[0] == 200);
assertTrue(erg[1] == 200.000000001);
assertTrue(erg[2] == 200);
// subtract(double[], double[]) : double[]
erg = AlgoPointND.subtract(c1, erg);
assertTrue(erg[0] == 200);
assertTrue(erg[1] == 200.000000001);
assertTrue(erg[2] == 200);
double[] erg2 = AlgoPointND.subtract(erg, erg);
assertTrue(erg2[0] == 0);
assertTrue(erg2[1] == 0);
assertTrue(erg2[2] == 0);
erg2 = AlgoPointND.subtract(c4, erg);
assertTrue(erg2[0] == 50);
assertTrue(Math.round(erg2[1]*1000000000) == 50000000001.0);
assertTrue(erg2[2] == 50);
erg2 = AlgoPointND.subtract(c5, erg);
assertTrue(erg2[0] == 0);
assertTrue(Math.round(erg2[1]*1000000000) == 1.0);
assertTrue(erg2[2] == 0);
// getDistanceToOrigin(double[]) : double
double d = AlgoPointND.getDistanceToOrigin(c1);
assertTrue(d == 0.0);
d = AlgoPointND.getDistanceToOrigin(c2);
assertTrue(Math.round(d * 10) == 866.0);
d = AlgoPointND.getDistanceToOrigin(c3);
assertTrue(Math.round(d * 10) == 1732.0);
// normalize(double[]) : double[]
erg = AlgoPointND.normalize(c1);
assertTrue(erg == null);
erg = AlgoPointND.normalize(c2);
assertTrue(Math.round(erg[0]*1000) == 577.0);
assertTrue(Math.round(erg[1]*1000) == 577.0);
assertTrue(Math.round(erg[2]*1000) == 577.0);
d = AlgoPointND.getDistanceToOrigin(erg);
assertTrue(d == 1.0);
}
private void _testNotWorkingAlgorithms() {
}
}