Added test for WindCommand
#story[1096]
This commit is contained in:
@@ -12,6 +12,8 @@ public class WindCommand implements Command {
|
|||||||
private MockBoat boat;
|
private MockBoat boat;
|
||||||
private int direction;
|
private int direction;
|
||||||
|
|
||||||
|
private double offset = 3.0;
|
||||||
|
|
||||||
public WindCommand(MockRace race, MockBoat boat, boolean upwind) {
|
public WindCommand(MockRace race, MockBoat boat, boolean upwind) {
|
||||||
this.race = race;
|
this.race = race;
|
||||||
this.boat = boat;
|
this.boat = boat;
|
||||||
@@ -23,7 +25,6 @@ public class WindCommand implements Command {
|
|||||||
double wind = race.getWindDirection().degrees();
|
double wind = race.getWindDirection().degrees();
|
||||||
double heading = boat.getBearing().degrees();
|
double heading = boat.getBearing().degrees();
|
||||||
|
|
||||||
double offset = 3;
|
|
||||||
if(wind - heading < 0) offset *= -1 * direction;
|
if(wind - heading < 0) offset *= -1 * direction;
|
||||||
boat.setBearing(Bearing.fromDegrees(heading + offset));
|
boat.setBearing(Bearing.fromDegrees(heading + offset));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,31 +1,58 @@
|
|||||||
package mock.model.commandFactory;
|
package mock.model.commandFactory;
|
||||||
|
|
||||||
|
import mock.model.MockBoat;
|
||||||
import mock.model.MockRace;
|
import mock.model.MockRace;
|
||||||
import network.Messages.Enums.BoatActionEnum;
|
import network.Messages.Enums.BoatActionEnum;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import shared.model.Bearing;
|
||||||
import shared.model.Boat;
|
import shared.model.Boat;
|
||||||
import shared.model.Race;
|
import shared.model.Race;
|
||||||
import visualiser.model.VisualiserRace;
|
import visualiser.model.VisualiserRace;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
import static org.testng.Assert.*;
|
import static org.testng.Assert.*;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by connortaylorbrown on 4/08/17.
|
* Created by connortaylorbrown on 4/08/17.
|
||||||
*/
|
*/
|
||||||
public class WindCommandTest {
|
public class WindCommandTest {
|
||||||
private Race race;
|
private MockRace race;
|
||||||
private Boat boat;
|
private MockBoat boat;
|
||||||
private Command upwind;
|
private Command upwind;
|
||||||
private Command downwind;
|
private Command downwind;
|
||||||
|
private double initial;
|
||||||
|
|
||||||
|
private double offset = 3.0;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
boat = new Boat(0, "Bob", "NZ");
|
race = mock(MockRace.class);
|
||||||
|
boat = new MockBoat(0, "Bob", "NZ", null);
|
||||||
|
|
||||||
|
when(race.getWindDirection()).thenReturn(Bearing.fromDegrees(0.0));
|
||||||
|
boat.setBearing(Bearing.fromDegrees(45.0));
|
||||||
|
|
||||||
|
upwind = CommandFactory.createCommand(race, boat, BoatActionEnum.UPWIND);
|
||||||
|
downwind = CommandFactory.createCommand(race, boat, BoatActionEnum.DOWNWIND);
|
||||||
|
|
||||||
|
initial = boat.getBearing().degrees();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ensure the difference between initial and final angle is 3 degrees
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void upwindCommandDecreasesAngle() {
|
||||||
|
upwind.execute();
|
||||||
|
assertEquals(initial - boat.getBearing().degrees(), offset, 1e-5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void upwindCommandDecreasesAngle() {
|
public void downwindCommandIncreasesAngle() {
|
||||||
|
downwind.execute();
|
||||||
|
assertEquals(boat.getBearing().degrees() - initial, offset, 1e-5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user