From 97696cc95b15cc21cc40b4b51536637ca11f0e94 Mon Sep 17 00:00:00 2001 From: Kusal Ekanayake Date: Mon, 7 Aug 2017 17:54:34 +1200 Subject: [PATCH] Started work on cucumber tests. Trying to sort through threads, getting inconsistent results. #story[1111] #pair[kre39,ptg19] --- .../seng302/gameServer/MainServerThread.java | 1 + .../visualiser/ClientToServerThread.java | 2 + .../java/seng302/visualiser/GameClient.java | 5 +- .../controllers/StartScreenController.java | 2 +- src/test/java/RunCucumberTests.java | 12 +++++ src/test/java/features/toggleSail.feature | 5 ++ .../map/BoatSailAnimationToggleTest.java | 2 - src/test/java/steps/ToggleSailSteps.java | 51 +++++++++++++++++++ 8 files changed, 74 insertions(+), 6 deletions(-) create mode 100644 src/test/java/RunCucumberTests.java create mode 100644 src/test/java/features/toggleSail.feature create mode 100644 src/test/java/steps/ToggleSailSteps.java diff --git a/src/main/java/seng302/gameServer/MainServerThread.java b/src/main/java/seng302/gameServer/MainServerThread.java index 6e827d95..838df5fb 100644 --- a/src/main/java/seng302/gameServer/MainServerThread.java +++ b/src/main/java/seng302/gameServer/MainServerThread.java @@ -26,6 +26,7 @@ public class MainServerThread extends Observable implements Runnable, ClientConn private ArrayList serverToClientThreads = new ArrayList<>(); public MainServerThread() { + new GameState("localhost"); try { serverSocket = new ServerSocket(PORT); } catch (IOException e) { diff --git a/src/main/java/seng302/visualiser/ClientToServerThread.java b/src/main/java/seng302/visualiser/ClientToServerThread.java index 414696c8..838c92b6 100644 --- a/src/main/java/seng302/visualiser/ClientToServerThread.java +++ b/src/main/java/seng302/visualiser/ClientToServerThread.java @@ -25,6 +25,8 @@ import seng302.gameServer.server.messages.Message; */ public class ClientToServerThread implements Runnable { + + /** * Functional interface for receiving packets from client socket. */ diff --git a/src/main/java/seng302/visualiser/GameClient.java b/src/main/java/seng302/visualiser/GameClient.java index 24cd3aaa..68a3a25a 100644 --- a/src/main/java/seng302/visualiser/GameClient.java +++ b/src/main/java/seng302/visualiser/GameClient.java @@ -250,9 +250,8 @@ public class GameClient { private void processRaceStatusUpdate(RaceStatusData data) { if (allXMLReceived()) { raceState.updateState(data); - if (raceView != null) { - raceView.getGameView().setWindDir(raceState.getWindDirection()); - } + if (raceView != null) + raceView.getGameView().setWindDir(raceState.getWindDirection()); for (long[] boatData : data.getBoatData()) { Yacht yacht = allBoatsMap.get((int) boatData[0]); yacht.setEstimateTimeTillNextMark(raceState.getRaceTime() - boatData[1]); diff --git a/src/main/java/seng302/visualiser/controllers/StartScreenController.java b/src/main/java/seng302/visualiser/controllers/StartScreenController.java index 87199442..1a9db1a1 100644 --- a/src/main/java/seng302/visualiser/controllers/StartScreenController.java +++ b/src/main/java/seng302/visualiser/controllers/StartScreenController.java @@ -66,7 +66,7 @@ public class StartScreenController implements Initializable { */ @FXML public void hostButtonPressed() { - new GameState(getLocalHostIp()); +// new GameState(getLocalHostIp()); gameClient = new GameClient(holder); gameClient.runAsHost(getLocalHostIp(), 4942); // try { diff --git a/src/test/java/RunCucumberTests.java b/src/test/java/RunCucumberTests.java new file mode 100644 index 00000000..24b2ae54 --- /dev/null +++ b/src/test/java/RunCucumberTests.java @@ -0,0 +1,12 @@ +import cucumber.api.CucumberOptions; +import cucumber.api.junit.Cucumber; +import org.junit.runner.RunWith; + +/** + * Created by kre39 on 7/08/17. + */ + +@RunWith(Cucumber.class) +@CucumberOptions(features = "src/test/java/features") +public class RunCucumberTests { +} diff --git a/src/test/java/features/toggleSail.feature b/src/test/java/features/toggleSail.feature new file mode 100644 index 00000000..a3fb4598 --- /dev/null +++ b/src/test/java/features/toggleSail.feature @@ -0,0 +1,5 @@ +Feature: SailsToggle + Scenario: User toggles in sail + Given The game is running + When the user has pressed "shift" + Then the sails are "in" \ No newline at end of file diff --git a/src/test/java/seng302/visualiser/map/BoatSailAnimationToggleTest.java b/src/test/java/seng302/visualiser/map/BoatSailAnimationToggleTest.java index 48d3fda8..cccea5c6 100644 --- a/src/test/java/seng302/visualiser/map/BoatSailAnimationToggleTest.java +++ b/src/test/java/seng302/visualiser/map/BoatSailAnimationToggleTest.java @@ -16,13 +16,11 @@ public class BoatSailAnimationToggleTest { private Yacht yacht; - @Before public void setup() throws Exception{ yacht = new Yacht("Yacht", 1, "YACHT", "YAC", "Test Yacht", "NZ"); } - @Test public void sailToggleTest() throws Exception { assertFalse(yacht.getSailIn()); diff --git a/src/test/java/steps/ToggleSailSteps.java b/src/test/java/steps/ToggleSailSteps.java new file mode 100644 index 00000000..af086bb6 --- /dev/null +++ b/src/test/java/steps/ToggleSailSteps.java @@ -0,0 +1,51 @@ +package steps; + +import cucumber.api.java.en.Given; +import cucumber.api.java.en.Then; +import cucumber.api.java.en.When; +import seng302.gameServer.GameStages; +import seng302.gameServer.GameState; +import seng302.gameServer.MainServerThread; +import seng302.gameServer.server.messages.BoatActionMessage; +import seng302.gameServer.server.messages.BoatActionType; +import seng302.model.Yacht; +import seng302.visualiser.ClientToServerThread; + +/** + * Created by kre39 on 7/08/17. + */ +public class ToggleSailSteps { + + + MainServerThread mst; + ClientToServerThread client; + boolean sailsIn = false; + long startTime; + private Yacht yacht; + + + + @Given("^The game is running$") + public void the_game_is_running() throws Throwable { + mst = new MainServerThread(); + client = new ClientToServerThread("localhost", 4942); + GameState.setCurrentStage(GameStages.RACING); + } + + @When("^the user has pressed \"([^\"]*)\"$") + public void the_user_has_pressed(String arg1) throws Throwable { + startTime = System.currentTimeMillis(); + if (arg1 == "shift") { + if (sailsIn) { + client.sendBoatActionMessage(new BoatActionMessage(BoatActionType.SAILS_OUT)); + } else { + client.sendBoatActionMessage(new BoatActionMessage(BoatActionType.SAILS_IN)); + } + } + } + + @Then("^the sails are \"([^\"]*)\"$") + public void the_sails_are(String arg1) throws Throwable { + System.out.println(GameState.getYachts().values()); + } +}