From e76de1cbf994dd18241864de90c76f5b52e73145 Mon Sep 17 00:00:00 2001 From: Connor Taylor-Brown Date: Mon, 7 Aug 2017 14:13:14 +1200 Subject: [PATCH] Added test for WindCommand #story[1096] --- .../model/commandFactory/WindCommand.java | 3 +- .../model/commandFactory/WindCommandTest.java | 33 +++++++++++++++++-- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/racevisionGame/src/main/java/mock/model/commandFactory/WindCommand.java b/racevisionGame/src/main/java/mock/model/commandFactory/WindCommand.java index b254f087..d20c0744 100644 --- a/racevisionGame/src/main/java/mock/model/commandFactory/WindCommand.java +++ b/racevisionGame/src/main/java/mock/model/commandFactory/WindCommand.java @@ -12,6 +12,8 @@ public class WindCommand implements Command { private MockBoat boat; private int direction; + private double offset = 3.0; + public WindCommand(MockRace race, MockBoat boat, boolean upwind) { this.race = race; this.boat = boat; @@ -23,7 +25,6 @@ public class WindCommand implements Command { double wind = race.getWindDirection().degrees(); double heading = boat.getBearing().degrees(); - double offset = 3; if(wind - heading < 0) offset *= -1 * direction; boat.setBearing(Bearing.fromDegrees(heading + offset)); } diff --git a/racevisionGame/src/test/java/mock/model/commandFactory/WindCommandTest.java b/racevisionGame/src/test/java/mock/model/commandFactory/WindCommandTest.java index c3d0df04..4316d78d 100644 --- a/racevisionGame/src/test/java/mock/model/commandFactory/WindCommandTest.java +++ b/racevisionGame/src/test/java/mock/model/commandFactory/WindCommandTest.java @@ -1,31 +1,58 @@ package mock.model.commandFactory; +import mock.model.MockBoat; import mock.model.MockRace; import network.Messages.Enums.BoatActionEnum; import org.junit.Before; import org.junit.Test; +import org.mockito.Mock; +import shared.model.Bearing; import shared.model.Boat; import shared.model.Race; import visualiser.model.VisualiserRace; +import static org.mockito.Mockito.when; import static org.testng.Assert.*; +import static org.mockito.Mockito.mock; /** * Created by connortaylorbrown on 4/08/17. */ public class WindCommandTest { - private Race race; - private Boat boat; + private MockRace race; + private MockBoat boat; private Command upwind; private Command downwind; + private double initial; + + private double offset = 3.0; @Before 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 + public void downwindCommandIncreasesAngle() { + downwind.execute(); + assertEquals(boat.getBearing().degrees() - initial, offset, 1e-5); } } \ No newline at end of file