You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.5 KiB
78 lines
2.5 KiB
package seng302.Model;
|
|
|
|
import org.geotools.referencing.GeodeticCalculator;
|
|
import org.junit.Test;
|
|
import seng302.Constants;
|
|
import seng302.GPSCoordinate;
|
|
|
|
import java.awt.geom.Point2D;
|
|
|
|
import static junit.framework.TestCase.assertEquals;
|
|
|
|
/**
|
|
* Created by esa46 on 22/03/17.
|
|
*/
|
|
public class LegTest {
|
|
|
|
private final Marker ORIGIN_MARKER = new Marker(new GPSCoordinate(0, 0));
|
|
|
|
@Test
|
|
public void calculateDistanceHandles5nmNorth() {
|
|
GeodeticCalculator calc = new GeodeticCalculator();
|
|
calc.setStartingGeographicPoint(0, 0);
|
|
calc.setDirection(0, 5 * Constants.NMToMetersConversion);
|
|
|
|
Marker endMarker = getEndMarker(calc.getDestinationGeographicPoint());
|
|
Leg test = new Leg("Test", ORIGIN_MARKER, endMarker, 0);
|
|
assertEquals(test.getDistance(), 5, 1e-8);
|
|
}
|
|
|
|
@Test
|
|
public void calculateDistanceHandles12nmEast() {
|
|
GeodeticCalculator calc = new GeodeticCalculator();
|
|
calc.setStartingGeographicPoint(0, 0);
|
|
calc.setDirection(90, 12 * Constants.NMToMetersConversion);
|
|
|
|
Marker endMarker = getEndMarker(calc.getDestinationGeographicPoint());
|
|
Leg test = new Leg("Test", ORIGIN_MARKER, endMarker, 0);
|
|
assertEquals(test.getDistance(), 12, 1e-8);
|
|
}
|
|
|
|
@Test
|
|
public void calculateDistanceHandlesHalfnmSouth() {
|
|
GeodeticCalculator calc = new GeodeticCalculator();
|
|
calc.setStartingGeographicPoint(0, 0);
|
|
calc.setDirection(180, 0.5 * Constants.NMToMetersConversion);
|
|
|
|
Marker endMarker = getEndMarker(calc.getDestinationGeographicPoint());
|
|
Leg test = new Leg("Test", ORIGIN_MARKER, endMarker, 0);
|
|
assertEquals(test.getDistance(), 0.5, 1e-8);
|
|
}
|
|
|
|
@Test
|
|
public void calculateDistanceHandlesPoint1nmWest() {
|
|
GeodeticCalculator calc = new GeodeticCalculator();
|
|
calc.setStartingGeographicPoint(0, 0);
|
|
calc.setDirection(-90, 0.1 * Constants.NMToMetersConversion);
|
|
|
|
Marker endMarker = getEndMarker(calc.getDestinationGeographicPoint());
|
|
Leg test = new Leg("Test", ORIGIN_MARKER, endMarker, 0);
|
|
assertEquals(test.getDistance(), 0.1, 1e-8);
|
|
}
|
|
|
|
@Test
|
|
public void calculateDistanceHandlesZeroDifference() {
|
|
|
|
Leg test = new Leg("Test", ORIGIN_MARKER, ORIGIN_MARKER, 0);
|
|
assertEquals(test.getDistance(), 0, 1e-8);
|
|
}
|
|
|
|
private Marker getEndMarker(Point2D point) {
|
|
|
|
GPSCoordinate coords = new GPSCoordinate(point.getY(), point.getX());
|
|
|
|
return new Marker(coords);
|
|
|
|
}
|
|
}
|