/*
* Copyright (c) 2016 Vivid Solutions.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Eclipse Distribution License v. 1.0 which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
*
* http://www.eclipse.org/org/documents/edl-v10.php.
*/
package org.locationtech.jts.geom;
import junit.framework.TestCase;
import junit.textui.TestRunner;
public class CoordinateTest extends TestCase
{
public CoordinateTest(String name)
{
super(name);
}
public static void main(String args[]) {
TestRunner.run(CoordinateTest.class);
}
public void testConstructor3D()
{
Coordinate c = new Coordinate(350.2, 4566.8, 5266.3);
assertEquals(c.x, 350.2);
assertEquals(c.y, 4566.8);
assertEquals(c.z, 5266.3);
}
public void testConstructor2D()
{
Coordinate c = new Coordinate(350.2, 4566.8);
assertEquals(c.x, 350.2);
assertEquals(c.y, 4566.8);
assertEquals(c.z, Coordinate.NULL_ORDINATE);
}
public void testDefaultConstructor()
{
Coordinate c = new Coordinate();
assertEquals(c.x, 0.0);
assertEquals(c.y, 0.0);
assertEquals(c.z, Coordinate.NULL_ORDINATE);
}
public void testCopyConstructor3D()
{
Coordinate orig = new Coordinate(350.2, 4566.8, 5266.3);
Coordinate c = new Coordinate(orig);
assertEquals(c.x, 350.2);
assertEquals(c.y, 4566.8);
assertEquals(c.z, 5266.3);
}
public void testSetCoordinate()
{
Coordinate orig = new Coordinate(350.2, 4566.8, 5266.3);
Coordinate c = new Coordinate();
c.setCoordinate(orig);
assertEquals(c.x, 350.2);
assertEquals(c.y, 4566.8);
assertEquals(c.z, 5266.3);
}
public void testGetOrdinate()
{
Coordinate c = new Coordinate(350.2, 4566.8, 5266.3);
assertEquals(c.getOrdinate(Coordinate.X), 350.2);
assertEquals(c.getOrdinate(Coordinate.Y), 4566.8);
assertEquals(c.getOrdinate(Coordinate.Z), 5266.3);
}
public void testSetOrdinate()
{
Coordinate c = new Coordinate();
c.setOrdinate(Coordinate.X, 111);
c.setOrdinate(Coordinate.Y, 222);
c.setOrdinate(Coordinate.Z, 333);
assertEquals(c.getOrdinate(Coordinate.X), 111.0);
assertEquals(c.getOrdinate(Coordinate.Y), 222.0);
assertEquals(c.getOrdinate(Coordinate.Z), 333.0);
}
public void testEquals()
{
Coordinate c1 = new Coordinate(1,2,3);
String s = "Not a coordinate";
assertTrue(! c1.equals(s));
Coordinate c2 = new Coordinate(1,2,3);
assertTrue(c1.equals2D(c2));
Coordinate c3 = new Coordinate(1,22,3);
assertTrue(! c1.equals2D(c3));
}
public void testEquals2D()
{
Coordinate c1 = new Coordinate(1,2,3);
Coordinate c2 = new Coordinate(1,2,3);
assertTrue(c1.equals2D(c2));
Coordinate c3 = new Coordinate(1,22,3);
assertTrue(! c1.equals2D(c3));
}
public void testEquals3D()
{
Coordinate c1 = new Coordinate(1,2,3);
Coordinate c2 = new Coordinate(1,2,3);
assertTrue(c1.equals3D(c2));
Coordinate c3 = new Coordinate(1,22,3);
assertTrue(! c1.equals3D(c3));
}
public void testEquals2DWithinTolerance()
{
Coordinate c = new Coordinate(100.0, 200.0, 50.0);
Coordinate aBitOff = new Coordinate(100.1, 200.1, 50.0);
assertTrue(c.equals2D(aBitOff, 0.2));
}
public void testEqualsInZ() {
Coordinate c = new Coordinate(100.0, 200.0, 50.0);
Coordinate withSameZ = new Coordinate(100.1, 200.1, 50.1);
assertTrue(c.equalInZ(withSameZ, 0.2));
}
public void testCompareTo()
{
Coordinate lowest = new Coordinate(10.0, 100.0, 50.0);
Coordinate highest = new Coordinate(20.0, 100.0, 50.0);
Coordinate equalToHighest = new Coordinate(20.0, 100.0, 50.0);
Coordinate higherStill = new Coordinate(20.0, 200.0, 50.0);
assertEquals(-1, lowest.compareTo(highest));
assertEquals(1, highest.compareTo(lowest));
assertEquals(-1, highest.compareTo(higherStill));
assertEquals(0, highest.compareTo(equalToHighest));
}
public void testToString()
{
String expectedResult = "(100.0, 200.0, 50.0)";
String actualResult = new Coordinate(100.0, 200.0, 50.0).toString();
assertEquals(expectedResult, actualResult);
}
public void testClone() {
Coordinate c = new Coordinate(100.0, 200.0, 50.0);
Coordinate clone = (Coordinate) c.clone();
assertTrue(c.equals3D(clone));
}
public void testDistance() {
Coordinate coord1 = new Coordinate(0.0, 0.0, 0.0);
Coordinate coord2 = new Coordinate(100.0, 200.0, 50.0);
double distance = coord1.distance(coord2);
assertEquals(distance, 223.60679774997897, 0.00001);
}
public void testDistance3D() {
Coordinate coord1 = new Coordinate(0.0, 0.0, 0.0);
Coordinate coord2 = new Coordinate(100.0, 200.0, 50.0);
double distance = coord1.distance3D(coord2);
assertEquals(distance, 229.128784747792, 0.000001);
}
}