diff --git a/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java b/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java index 63899e2..ce35c57 100644 --- a/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java +++ b/src/test/java/inf112/fiasko/roborally/objects/PhaseTest.java @@ -1,5 +1,6 @@ package inf112.fiasko.roborally.objects; +import inf112.fiasko.roborally.elementproperties.Action; import inf112.fiasko.roborally.elementproperties.Position; import inf112.fiasko.roborally.elementproperties.RobotID; import inf112.fiasko.roborally.utility.BoardLoaderUtil; @@ -10,22 +11,48 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; -import static junit.framework.TestCase.assertEquals; +import static junit.framework.TestCase.*; public class PhaseTest { private Phase phase; private Board board; - private Position robot1Position; + private Position robot1Position = new Position(2, 2); + private Position robot2Position = new Position(3, 2); + private Position robot3Position = new Position(7 , 2); + private Position robot4Position = new Position(3 , 8); + private Position robot5Position = new Position(2 , 14); + private Position robot6Position = new Position(2 , 15); + private Robot robot1 = new Robot(RobotID.ROBOT_1, robot1Position); + private Robot robot2 = new Robot(RobotID.ROBOT_2, robot2Position); + private Robot robot3 = new Robot(RobotID.ROBOT_3, robot3Position); + private Robot robot4 = new Robot(RobotID.ROBOT_4, robot4Position); + private Robot robot5 = new Robot(RobotID.ROBOT_5, robot5Position); + private Robot robot6 = new Robot(RobotID.ROBOT_6, robot6Position); + private Player player1 = new Player(RobotID.ROBOT_1, "Player 1"); + private Player player2 = new Player(RobotID.ROBOT_2, "Player 2"); + private Player player3 = new Player(RobotID.ROBOT_3, "Player 3"); + private Player player4 = new Player(RobotID.ROBOT_4, "Player 4"); + private Player player5 = new Player(RobotID.ROBOT_5, "Player 5"); + private Player player6 = new Player(RobotID.ROBOT_6, "Player 6"); + + List robots = new ArrayList<>(); @Before public void setUp() { - List robots = new ArrayList<>(); - robot1Position = new Position(2, 2); - robots.add(new Robot(RobotID.ROBOT_1, robot1Position)); - robots.add(new Robot(RobotID.ROBOT_2, new Position(3, 2))); + robots.add(robot1); + robots.add(robot2); + robots.add(robot3); + robots.add(robot4); + robots.add(robot5); + robots.add(robot6); + List playerList = new ArrayList<>(); - playerList.add(new Player(RobotID.ROBOT_1, "Player 1")); - playerList.add(new Player(RobotID.ROBOT_2, "Player 2")); + playerList.add(player1); + playerList.add(player2); + playerList.add(player3); + playerList.add(player4); + playerList.add(player5); + playerList.add(player6); try { board = BoardLoaderUtil.loadBoard("boards/Checkmate.txt", robots); this.phase = new Phase(board, playerList, 0, null); @@ -39,4 +66,77 @@ public class PhaseTest { phase.moveAllConveyorBelts(); assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(robot1Position)); } + + @Test + public void robotRegistersFlagWhenOnCorrectOne() { + assertEquals(robot3.getLastFlagVisited(), 0); + assertFalse(robot3.hasTouchedFlagThisTurn()); + phase.checkAllFlags(); + assertEquals(robot3.getLastFlagVisited(), 1); + assertTrue(robot3.hasTouchedFlagThisTurn()); + } + + @Test + public void robotDoesNotRegistersWrongFlag() { + assertEquals(robot4.getLastFlagVisited(), 0); + assertFalse(robot4.hasTouchedFlagThisTurn()); + phase.checkAllFlags(); + assertEquals(robot4.getLastFlagVisited(), 0); + assertFalse(robot4.hasTouchedFlagThisTurn()); + } + + @Test + public void actionDoesPerformAnAction() throws InterruptedException { + assertEquals(robot4.getRobotId(), board.getRobotOnPosition(robot4Position)); + phase.makeMove(RobotID.ROBOT_4, Action.MOVE_1); + assertEquals(robot4.getRobotId(),board.getRobotOnPosition(new Position(3, 7))); + } + + @Test + public void programmingCardsGetsPlayedInOrder() throws InterruptedException { + List testProgram1 = new ArrayList<>(); + List testProgram2 = new ArrayList<>(); + List testProgram3 = new ArrayList<>(); + ProgrammingCard card1 = new ProgrammingCard(1, Action.MOVE_1); + ProgrammingCard card2 = new ProgrammingCard(2, Action.ROTATE_RIGHT); + ProgrammingCard card3 = new ProgrammingCard(3, Action.MOVE_1); + ProgrammingCard card4 = new ProgrammingCard(4, Action.MOVE_1); + ProgrammingCard card5 = new ProgrammingCard(5, Action.MOVE_1); + ProgrammingCard card6 = new ProgrammingCard(10, Action.MOVE_1); + ProgrammingCard card7 = new ProgrammingCard(11, Action.ROTATE_RIGHT); + ProgrammingCard card8 = new ProgrammingCard(12, Action.MOVE_1); + ProgrammingCard card9 = new ProgrammingCard(13, Action.MOVE_1); + ProgrammingCard card10 = new ProgrammingCard(14, Action.MOVE_1); + ProgrammingCard card11 = new ProgrammingCard(100, Action.ROTATE_LEFT); + ProgrammingCard card12= new ProgrammingCard(200, Action.ROTATE_LEFT); + ProgrammingCard card13 = new ProgrammingCard(300, Action.ROTATE_LEFT); + ProgrammingCard card14 = new ProgrammingCard(400, Action.ROTATE_LEFT); + ProgrammingCard card15 = new ProgrammingCard(500, Action.ROTATE_LEFT); + testProgram1.add(card1); + testProgram1.add(card2); + testProgram1.add(card3); + testProgram1.add(card4); + testProgram1.add(card5); + testProgram2.add(card6); + testProgram2.add(card7); + testProgram2.add(card8); + testProgram2.add(card9); + testProgram2.add(card10); + testProgram3.add(card11); + testProgram3.add(card12); + testProgram3.add(card13); + testProgram3.add(card14); + testProgram3.add(card15); + player1.setProgram(testProgram3); + player2.setProgram(testProgram3); + player3.setProgram(testProgram3); + player4.setProgram(testProgram3); + player5.setProgram(testProgram1); + player6.setProgram(testProgram2); + assertEquals(robot5.getRobotId(), board.getRobotOnPosition(robot5Position)); + assertEquals(robot6.getRobotId(), board.getRobotOnPosition(robot6Position)); + phase.runProgrammingCards(1); + assertEquals(robot5.getRobotId(), board.getRobotOnPosition(new Position(2, 12))); + assertEquals(robot6.getRobotId(), board.getRobotOnPosition(new Position(2, 14))); + } }