package nl.tudelft.simulation.dsol.animation.D2;
import java.awt.Dimension;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import junit.framework.Assert;
import junit.framework.TestCase;
/**
* This class defines the JUnit test for the D2Test
* (c) copyright 2002-2005 Delft University of Technology , the
* Netherlands.
* See for project information www.simulation.tudelft.nl
* License of use: Lesser General Public License (LGPL) , no
* warranty.
* @version 2.0 21.09.2003
* @author Peter Jacobs , Alexander Verbraeck
*/
public class D2Test extends TestCase
{
/** TEST_METHOD_NAME refers to the name of the test method. */
public static final String TEST_METHOD_NAME = "test";
/**
* constructs a new D2Test.
*/
public D2Test()
{
super(TEST_METHOD_NAME);
}
/**
* tests the 2D Animation
*/
public void test()
{
Rectangle2D extent = new Rectangle2D.Double(0, 0, 100, 100);
Dimension size = new Dimension(100, 100);
// Let's focus on the scale.
Assert.assertTrue(Renderable2DInterface.Util.getScale(extent, size) == 1.0);
size.setSize(200, 200);
Assert.assertTrue(Renderable2DInterface.Util.getScale(extent, size) == 0.5);
extent.setRect(0, 0, 50, 50);
Assert.assertTrue(Renderable2DInterface.Util.getScale(extent, size) == 0.25);
// Let's test infinity pointer values..
// size.setSize(0, 0);
// Assert.assertTrue(Double.isInfinite(Renderable2DInterface.Util.getScale(extent, size)));
// Let's test invalid screen size
size.setSize(-1, -1);
Assert.assertTrue(Double.isNaN(Renderable2DInterface.Util.getScale(extent, size)));
// Let's test wrong ratio values
// size.setSize(50, 100);
// Assert.assertTrue(Double.isNaN(Renderable2DInterface.Util.getScale(extent, size)));
size.setSize(100, 100);
extent.setRect(0, 0, 100, 100);
Point2D point = new Point2D.Double(1, 1);
Assert.assertTrue(Renderable2DInterface.Util.getScreenCoordinates(point, extent, size).distance(1, 99) == 0);
size.setSize(200, 200);
extent.setRect(0, 0, 100, 100);
point = new Point2D.Double(1, 1);
Assert.assertTrue(Renderable2DInterface.Util.getScreenCoordinates(point, extent, size).distance(2, 198) == 0);
// Invalid screen
/*
* size.setSize(-200, -200); extent.setRect(0, 0, 100, 100); point = new Point2D.Double(1, 1);
* Assert.assertNull(Renderable2DInterface.Util.getScreenCoordinates( point, extent, size)); // Invalid ratio
* size.setSize(200, 100); extent.setRect(0, 0, 100, 100); point = new Point2D.Double(1, 1);
* Assert.assertNull(Renderable2DInterface.Util.getScreenCoordinates( point, extent, size)); // Let's test for
* null values size.setSize(100, 100); extent.setRect(0, 0, 100, 100); point = new Point2D.Double(1, 1);
* Assert.assertNull(Renderable2DInterface.Util.getScreenCoordinates(null, extent, size));
* Assert.assertNull(Renderable2DInterface.Util.getScreenCoordinates( point, null, size));
* Assert.assertNull(Renderable2DInterface.Util.getScreenCoordinates( point, extent, null)); // point not in
* extent size.setSize(100, 100); extent.setRect(0, 0, 100, 100); point = new Point2D.Double(-1, 1);
* Assert.assertNull(Renderable2DInterface.Util.getScreenCoordinates( point, extent, size));
*/// ********************* WORLD COORDINATES ASSERTIONS **************//
size.setSize(100, 100);
extent.setRect(0, 0, 100, 100);
point = new Point2D.Double(1, 1);
Assert.assertTrue(Renderable2DInterface.Util.getWorldCoordinates(point, extent, size).distance(1, 99) == 0);
size.setSize(200, 200);
extent.setRect(0, 0, 100, 100);
point = new Point2D.Double(1, 1);
Assert.assertTrue(Renderable2DInterface.Util.getWorldCoordinates(point, extent, size).distance(0.5, 99.5) == 0);
// Invalid screen
/*
* size.setSize(-200, -200); extent.setRect(0, 0, 100, 100); point = new Point2D.Double(1, 1);
* Assert.assertNull(Renderable2DInterface.Util.getWorldCoordinates(point, extent, size)); // Invalid ratio
* size.setSize(200, 100); extent.setRect(0, 0, 100, 100); point = new Point2D.Double(1, 1);
* Assert.assertNull(Renderable2DInterface.Util.getWorldCoordinates(point, extent, size)); // Let's test for
* null values size.setSize(100, 100); extent.setRect(0, 0, 100, 100); point = new Point2D.Double(1, 1);
* Assert.assertNull(Renderable2DInterface.Util.getWorldCoordinates(null, extent, size));
* Assert.assertNull(Renderable2DInterface.Util.getWorldCoordinates(point, null, size));
* Assert.assertNull(Renderable2DInterface.Util.getWorldCoordinates(point, extent, null)); // point not in
* extent size.setSize(100, 100); extent.setRect(0, 0, 100, 100); point = new Point2D.Double(-1, 1);
* Assert.assertNull(Renderable2DInterface.Util.getWorldCoordinates(point, extent, size));
*/
// ********************* COMPUTE VISIBLE EXTENT **************//
size.setSize(200, 50);
extent.setRect(0, 0, 1000, 1000);
extent = Renderable2DInterface.Util.computeVisibleExtent(extent, size);
Assert.assertTrue(Renderable2DInterface.Util.getScale(extent, size) == 5.0);
Assert.assertTrue(extent.getMinY() == 375.0);
Assert.assertTrue(extent.getHeight() == 250.0);
}
}