Tests for calculating leg distance and updating boat positions added

#story[9] #test
This commit is contained in:
Erika Savell
2017-03-22 11:03:16 +13:00
parent 74a9b1499c
commit 393fae2ec4
6 changed files with 118 additions and 40 deletions
@@ -1,6 +1,7 @@
package seng302.Model;
import javafx.scene.paint.Color;
import org.geotools.referencing.GeodeticCalculator;
import org.junit.Test;
import org.opengis.geometry.coordinate.Geodesic;
@@ -8,6 +9,7 @@ import seng302.Constants;
import seng302.GPSCoordinate;
import java.awt.geom.Point2D;
import java.util.ArrayList;
import static org.junit.Assert.assertEquals;
@@ -16,10 +18,50 @@ import static org.junit.Assert.assertEquals;
*/
public class ConstantVelocityRaceTest {
// @Test
// public void
@Test
public void updatePositionChangesDistanceTravelled() {
BoatInRace boat = new BoatInRace("Test", 1, Color.ALICEBLUE, "tt");
Leg start = new Leg("Start", new GPSCoordinate(0, 0), new GPSCoordinate(50, 50), 0);
boat.setCurrentLeg(start);
boat.setDistanceTravelledInLeg(0);
int timeElapsed = 3600000; //1 hr
ConstantVelocityRace race = new ConstantVelocityRace(new BoatInRace[1], new ArrayList<Leg>());
race.updatePosition(boat, timeElapsed);
assertEquals(boat.getDistanceTravelledInLeg(), boat.getVelocity() * timeElapsed / 3600000, 1e-8);
}
@Test
public void updatePositionHandlesNoChangeToDistanceTravelled() {
BoatInRace boat = new BoatInRace("Test", 0, Color.ALICEBLUE, "tt");
Leg start = new Leg("Start", new GPSCoordinate(0, 0), new GPSCoordinate(50, 50), 0);
boat.setCurrentLeg(start);
boat.setDistanceTravelledInLeg(0);
int timeElapsed = 3600000; //1 hr
ConstantVelocityRace race = new ConstantVelocityRace(new BoatInRace[1], new ArrayList<Leg>());
race.updatePosition(boat, timeElapsed);
assertEquals(boat.getDistanceTravelledInLeg(), 0, 1e-8);
}
@Test
public void changesToDistanceTravelledAreAdditive() {
BoatInRace boat = new BoatInRace("Test", 5, Color.ALICEBLUE, "tt");
Leg start = new Leg("Start", new GPSCoordinate(0, 0), new GPSCoordinate(50, 50), 0);
boat.setCurrentLeg(start);
boat.setDistanceTravelledInLeg(50);
int timeElapsed = 3600000; //1 hr
ConstantVelocityRace race = new ConstantVelocityRace(new BoatInRace[1], new ArrayList<Leg>());
race.updatePosition(boat, timeElapsed);
assertEquals(boat.getDistanceTravelledInLeg(), boat.getVelocity() * timeElapsed / 3600000 + 50, 1e-8);
}
@Test
public void travelling10nmNorthGivesCorrectNewCoordinates() {
+71
View File
@@ -0,0 +1,71 @@
package seng302.Model;
import org.geotools.referencing.GeodeticCalculator;
import org.junit.Test;
import seng302.Constants;
import seng302.GPSCoordinate;
import static junit.framework.TestCase.assertEquals;
/**
* Created by esa46 on 22/03/17.
*/
public class LegTest {
@Test
public void calculateDistanceHandles5nmNorth() {
GeodeticCalculator calc = new GeodeticCalculator();
calc.setStartingGeographicPoint(0, 0);
calc.setDirection(0, 5 * Constants.NMToMetersConversion);
GPSCoordinate startPoint = new GPSCoordinate(0, 0);
GPSCoordinate endPoint = new GPSCoordinate(calc.getDestinationGeographicPoint().getY(), calc.getDestinationGeographicPoint().getX());
Leg test= new Leg("Test", startPoint, endPoint, 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);
GPSCoordinate startPoint = new GPSCoordinate(0, 0);
GPSCoordinate endPoint = new GPSCoordinate(calc.getDestinationGeographicPoint().getY(), calc.getDestinationGeographicPoint().getX());
Leg test= new Leg("Test", startPoint, endPoint, 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);
GPSCoordinate startPoint = new GPSCoordinate(0, 0);
GPSCoordinate endPoint = new GPSCoordinate(calc.getDestinationGeographicPoint().getY(), calc.getDestinationGeographicPoint().getX());
Leg test= new Leg("Test", startPoint, endPoint, 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);
GPSCoordinate startPoint = new GPSCoordinate(0, 0);
GPSCoordinate endPoint = new GPSCoordinate(calc.getDestinationGeographicPoint().getY(), calc.getDestinationGeographicPoint().getX());
Leg test= new Leg("Test", startPoint, endPoint, 0);
assertEquals(test.getDistance(), 0.1, 1e-8);
}
@Test
public void calculateDistanceHandlesZeroDifference() {
GPSCoordinate startPoint = new GPSCoordinate(0, 0);
GPSCoordinate endPoint = new GPSCoordinate(0, 0);
Leg test= new Leg("Test", startPoint, endPoint, 0);
assertEquals(test.getDistance(), 0, 1e-8);
}
}
-25
View File
@@ -22,31 +22,6 @@ import static org.junit.Assert.assertTrue;
public class RaceTest {
// @Ignore
// @Test
// public void singleBoatRaceRunsAndFinishes(){
//
// BoatInRace boat = new BoatInRace("NZ", 240);
// ArrayList<BoatInRace> boats = new ArrayList<>();
// boats.add(boat);
// ArrayList<Leg> legs = new ArrayList<>();
// legs.add(new Leg("Start", new GPSCoordinate(0,0), new GPSCoordinate(1,1), 0));
// ConstantVelocityRace race = new ConstantVelocityRace(boats, legs);
// race.run();
// }
//
// @Test
// public void fasterBoatFinishesFirst() {
// BoatInRace fasterBoat = new BoatInRace("NZ", 2800);
// BoatInRace slowerBoat = new BoatInRace("AU", 1800);
// BoatInRace[] boats = new BoatInRace[] {slowerBoat, fasterBoat};
// Leg leg1 = new Leg("first leg", 1, new GPSCoordinate(0, 0), new GPSCoordinate(3, 4), 0);
// ArrayList<Leg> legs = new ArrayList<>();
// legs.add(leg1);
// ConstantVelocityRace race = new ConstantVelocityRace(boats, legs);
// race.run();
// }
@Test
public void finishOrderDeterminedByVelocity() {
BoatInRace[] boats = {