mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 14:28:43 +00:00
Added testing for the tack/gybe settings.
tags: #story[1105]
This commit is contained in:
@@ -131,9 +131,7 @@ public class Yacht {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isAuto) {
|
runAutoPilot();
|
||||||
runAutoPilot();
|
|
||||||
}
|
|
||||||
|
|
||||||
//UPDATE BOAT LOCATION
|
//UPDATE BOAT LOCATION
|
||||||
lastLocation = location;
|
lastLocation = location;
|
||||||
@@ -353,15 +351,13 @@ public class Yacht {
|
|||||||
* Moves the boat towards the given heading when the auto pilot was set. Disables the auto pilot
|
* Moves the boat towards the given heading when the auto pilot was set. Disables the auto pilot
|
||||||
* in the event that the boat is within the range of 1 turn step of its goal.
|
* in the event that the boat is within the range of 1 turn step of its goal.
|
||||||
*/
|
*/
|
||||||
private void runAutoPilot() {
|
public void runAutoPilot() {
|
||||||
if (autoHeading == null) {
|
if (isAuto) {
|
||||||
isAuto = false;
|
turnTowardsHeading(autoHeading);
|
||||||
// TODO: 10/08/17 possibly throw some sort of exception here maybe? autopilot shouldn't be true if there's no heading.
|
if (Math.abs(heading - autoHeading)
|
||||||
}
|
<= TURN_STEP) { //Cancel when within 1 turn step of target.
|
||||||
turnTowardsHeading(autoHeading);
|
isAuto = false;
|
||||||
if (Math.abs(heading - autoHeading)
|
}
|
||||||
<= TURN_STEP) { //Cancel when within 1 turn step of target.
|
|
||||||
isAuto = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -438,8 +434,7 @@ public class Yacht {
|
|||||||
|
|
||||||
// Take optimal heading and turn into a boat heading rather than a wind heading.
|
// Take optimal heading and turn into a boat heading rather than a wind heading.
|
||||||
optimalHeading =
|
optimalHeading =
|
||||||
optimalHeading + (double) Math
|
optimalHeading + GameState.getWindDirection();
|
||||||
.floorMod(GameState.getWindDirection().longValue(), 360L);
|
|
||||||
|
|
||||||
setAutoPilot(optimalHeading);
|
setAutoPilot(optimalHeading);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
package seng302.models;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import org.junit.AfterClass;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
|
import org.junit.Test;
|
||||||
|
import seng302.gameServer.GameState;
|
||||||
|
import seng302.model.Yacht;
|
||||||
|
|
||||||
|
|
||||||
|
public class YachtTest {
|
||||||
|
|
||||||
|
private static Yacht y1;
|
||||||
|
//Yacht y2;
|
||||||
|
private static Double windDirection = 45d;
|
||||||
|
private static Double windSpeed = 20d;
|
||||||
|
private static GameState gs;
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void setUp() {
|
||||||
|
y1 = new Yacht("Yacht", 101, "Y1", "Y1", "Yacht 1", "C1");
|
||||||
|
gs = new GameState("localhost");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void tackGybeTest() {
|
||||||
|
HashMap<Double, Double> values = new HashMap<>();
|
||||||
|
values.put(280.0, 80.0);
|
||||||
|
values.put(270.0, 90.0);
|
||||||
|
values.put(359.0, 1.0);
|
||||||
|
values.put(180.0, 180.0);
|
||||||
|
values.put(75.0, 285.0);
|
||||||
|
|
||||||
|
for (Double begin : values.keySet()) {
|
||||||
|
y1.setHeading(begin);
|
||||||
|
y1.tackGybe(windDirection);
|
||||||
|
for (int i = 0; i < 50; i++) {
|
||||||
|
y1.runAutoPilot();
|
||||||
|
}
|
||||||
|
assertEquals(values.get(begin), y1.getHeading(), 5.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@AfterClass
|
||||||
|
public static void tearDown() {
|
||||||
|
y1 = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user