/*
* 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;
import java.awt.geom.Point2D;
import org.geotools.geometry.iso.util.elem2D.Circle2D;
import org.geotools.geometry.iso.util.elem2D.Node2D;
import junit.framework.TestCase;
public class Circle2DTest extends TestCase {
public void testInstance() {
Circle2D circle = new Circle2D(0.0, 0.0, 1.5);
assertNotNull(circle);
}
public void testGetSet() {
Circle2D circle = new Circle2D(10.0, 8.0, 5.0);
assertNotNull(circle);
assertEquals(10.0, circle.getX());
assertEquals(8.0, circle.getY());
assertEquals(5.0, circle.getRadius());
circle.setX(9.0);
assertEquals(9.0, circle.getX());
assertEquals(8.0, circle.getY());
assertEquals(5.0, circle.getRadius());
circle.setY(7.0);
assertEquals(9.0, circle.getX());
assertEquals(7.0, circle.getY());
assertEquals(5.0, circle.getRadius());
circle.setRadius(4.0);
assertEquals(9.0, circle.getX());
assertEquals(7.0, circle.getY());
assertEquals(4.0, circle.getRadius());
circle.setValues(8.0, -6.0, 9.0);
assertEquals(8.0, circle.getX());
assertEquals(-6.0, circle.getY());
assertEquals(9.0, circle.getRadius());
assertEquals(8.0, circle.getCenter().getX());
assertEquals(-6.0, circle.getCenter().getY());
}
public void testContains() {
Circle2D circle = new Circle2D(100.0, 50.0, 25.0);
assertNotNull(circle);
assertFalse(circle.contains(new Node2D(0.0, 0.0)));
assertFalse(circle.contains(new Node2D(-10.0, 90.0)));
assertTrue(circle.contains(new Node2D(100.0, 50.0)));
assertTrue(circle.contains(new Node2D(124.9, 49.9)));
assertTrue(circle.contains(new Node2D(90.0, 60.0)));
assertFalse(circle.contains(new Node2D(-1000.0, -900.0)));
}
public void test3PointConstructor() {
Point2D pt1 = new Node2D(0.0, 0.0);
Point2D pt2 = new Node2D(5.0, 0.0);
Point2D pt3 = new Node2D(2.5, -2.0);
Circle2D circle = new Circle2D(pt1, pt2, pt3);
assertNotNull(circle);
assertEquals("Circle2D: X:2.5 Y:0.5625 r:2.5625", circle.toString());
assertEquals(5.125, circle.getRectangle().getWidth());
assertEquals(5.125, circle.getRectangle().getHeight());
assertEquals(2.5, circle.getCenter().getX());
//3 vertical points (bad!)
pt1 = new Node2D(0.0, 5.0);
pt2 = new Node2D(0.0, 10.0);
pt3 = new Node2D(0.0, 15.0);
try {
circle = new Circle2D(pt1, pt2, pt3);
fail("should have thrown illegal argument exception");
} catch (IllegalArgumentException e) {
}
pt1 = new Node2D(0.0, 5.0);
pt2 = new Node2D(0.0, 10.0);
pt3 = new Node2D(1.0, 15.0);
circle = new Circle2D(pt1, pt2, pt3);
assertNotNull(circle);
assertEquals("Circle2D: X:25.5 Y:7.5 r:25.622255950637914", circle.toString());
}
}