mirror of
https://github.com/inf112-v20/Fiasko.git
synced 2025-04-21 11:06:24 +02:00
493 lines
21 KiB
Java
493 lines
21 KiB
Java
package inf112.fiasko.roborally.objects;
|
|
|
|
import inf112.fiasko.roborally.elementproperties.Action;
|
|
import inf112.fiasko.roborally.elementproperties.Direction;
|
|
import inf112.fiasko.roborally.elementproperties.Position;
|
|
import inf112.fiasko.roborally.elementproperties.RobotID;
|
|
import inf112.fiasko.roborally.utility.BoardLoaderUtil;
|
|
import org.junit.Before;
|
|
import org.junit.Test;
|
|
|
|
import java.io.IOException;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import static junit.framework.TestCase.assertEquals;
|
|
import static junit.framework.TestCase.assertTrue;
|
|
import static org.junit.Assert.assertFalse;
|
|
import static org.junit.Assert.assertNull;
|
|
|
|
public class PhaseTest {
|
|
private List<Robot> robots = new ArrayList<>();
|
|
private Phase phase;
|
|
private Board board;
|
|
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");
|
|
|
|
@Before
|
|
public void setUp() {
|
|
robots.add(robot1);
|
|
robots.add(robot2);
|
|
robots.add(robot3);
|
|
robots.add(robot4);
|
|
robots.add(robot5);
|
|
robots.add(robot6);
|
|
|
|
List<Player> playerList = new ArrayList<>();
|
|
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);
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void robotCannotLeaveConveyorBeltIfBlockedByRobot() throws InterruptedException {
|
|
phase.moveAllConveyorBelts();
|
|
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(robot1Position));
|
|
}
|
|
|
|
@Test
|
|
public void playerWinsAfterTouchingAllFlagsInCorrectOrder() {
|
|
FakeGame testGame = new FakeGame();
|
|
List<Robot> robot = new ArrayList<>();
|
|
List<Player> player = new ArrayList<>();
|
|
robot.add(new Robot(RobotID.ROBOT_1, new Position(0, 0)));
|
|
player.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
|
|
|
try {
|
|
board = BoardLoaderUtil.loadBoard("boards/win_test_board.txt", robot);
|
|
Phase testPhase = new Phase(board, player, 0, testGame);
|
|
testPhase.checkAllFlags();
|
|
assertEquals("Player 1", testGame.getWinningPlayerName());
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
@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 robotFiresLaserAndHitsAnotherRobot() throws InterruptedException {
|
|
FakeGame testGame = new FakeGame();
|
|
List<Robot> bot = new ArrayList<>();
|
|
List<Player> botPlayer = new ArrayList<>();
|
|
Position bot1Position = new Position(9, 12);
|
|
Position bot2Position = new Position(9, 13);
|
|
Robot bot1 = new Robot(RobotID.ROBOT_1, bot1Position);
|
|
Robot bot2 = new Robot(RobotID.ROBOT_2, bot2Position);
|
|
bot.add(bot1);
|
|
bot.add(bot2);
|
|
Player botPlayer1 = new Player(RobotID.ROBOT_1, "Player 1");
|
|
Player botPlayer2 = new Player(RobotID.ROBOT_2, "Player 2");
|
|
botPlayer.add(botPlayer1);
|
|
botPlayer.add(botPlayer2);
|
|
|
|
try {
|
|
board = BoardLoaderUtil.loadBoard("boards/another_test_map.txt", bot);
|
|
Phase testPhase = new Phase(board, botPlayer, 0, testGame);
|
|
assertEquals(0, bot2.getDamageTaken());
|
|
assertEquals(0, bot1.getDamageTaken());
|
|
testPhase.fireAllLasers();
|
|
assertEquals(0, bot2.getDamageTaken());
|
|
assertEquals(1, bot1.getDamageTaken());
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void robotFiresLaserAndHitsAWallDoesNotDamageRobotOnOtherSide() throws InterruptedException {
|
|
FakeGame testGame = new FakeGame();
|
|
List<Robot> bot = new ArrayList<>();
|
|
List<Player> botPlayer = new ArrayList<>();
|
|
Position bot1Position = new Position(9, 11);
|
|
Position bot2Position = new Position(9, 13);
|
|
Robot bot1 = new Robot(RobotID.ROBOT_1, bot1Position);
|
|
Robot bot2 = new Robot(RobotID.ROBOT_2, bot2Position);
|
|
bot.add(bot1);
|
|
bot.add(bot2);
|
|
Player botPlayer1 = new Player(RobotID.ROBOT_1, "Player 1");
|
|
Player botPlayer2 = new Player(RobotID.ROBOT_2, "Player 2");
|
|
botPlayer.add(botPlayer1);
|
|
botPlayer.add(botPlayer2);
|
|
|
|
try {
|
|
board = BoardLoaderUtil.loadBoard("boards/another_test_map.txt", bot);
|
|
Phase testPhase = new Phase(board, botPlayer, 0, testGame);
|
|
assertEquals(0, bot2.getDamageTaken());
|
|
assertEquals(0, bot1.getDamageTaken());
|
|
testPhase.fireAllLasers();
|
|
assertEquals(0, bot2.getDamageTaken());
|
|
assertEquals(0, bot1.getDamageTaken());
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void robotGetsHitBy2Lasers() throws InterruptedException {
|
|
FakeGame testGame = new FakeGame();
|
|
List<Robot> bot = new ArrayList<>();
|
|
List<Player> botPlayer = new ArrayList<>();
|
|
Position bot1Position = new Position(9, 12);
|
|
Position bot2Position = new Position(9, 13);
|
|
Position bot3Position = new Position(8, 12);
|
|
Robot bot1 = new Robot(RobotID.ROBOT_1, bot1Position);
|
|
Robot bot2 = new Robot(RobotID.ROBOT_2, bot2Position);
|
|
Robot bot3 = new Robot(RobotID.ROBOT_3, bot3Position);
|
|
bot.add(bot1);
|
|
bot.add(bot2);
|
|
bot.add(bot3);
|
|
Player botPlayer1 = new Player(RobotID.ROBOT_1, "Player 1");
|
|
Player botPlayer2 = new Player(RobotID.ROBOT_2, "Player 2");
|
|
Player botPlayer3 = new Player(RobotID.ROBOT_3, "Player 3");
|
|
botPlayer.add(botPlayer1);
|
|
botPlayer.add(botPlayer2);
|
|
botPlayer.add(botPlayer3);
|
|
bot3.setFacingDirection(Direction.EAST);
|
|
|
|
try {
|
|
board = BoardLoaderUtil.loadBoard("boards/another_test_map.txt", bot);
|
|
Phase testPhase = new Phase(board, botPlayer, 0, testGame);
|
|
assertEquals(0, bot1.getDamageTaken());
|
|
testPhase.fireAllLasers();
|
|
assertEquals(2, bot1.getDamageTaken());
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
public void robotFiresLaserAndHitsARobotDoesNotDamageRobotOnOtherSide() throws InterruptedException {
|
|
FakeGame testGame = new FakeGame();
|
|
List<Robot> bot = new ArrayList<>();
|
|
List<Player> botPlayer = new ArrayList<>();
|
|
Position bot1Position = new Position(9, 12);
|
|
Position bot2Position = new Position(9, 13);
|
|
Position bot3Position = new Position(9, 14);
|
|
Robot bot1 = new Robot(RobotID.ROBOT_1, bot1Position);
|
|
Robot bot2 = new Robot(RobotID.ROBOT_2, bot2Position);
|
|
Robot bot3 = new Robot(RobotID.ROBOT_3, bot3Position);
|
|
bot.add(bot1);
|
|
bot.add(bot2);
|
|
bot.add(bot3);
|
|
Player botPlayer1 = new Player(RobotID.ROBOT_1, "Player 1");
|
|
Player botPlayer2 = new Player(RobotID.ROBOT_2, "Player 2");
|
|
Player botPlayer3 = new Player(RobotID.ROBOT_3, "Player 3");
|
|
botPlayer.add(botPlayer1);
|
|
botPlayer.add(botPlayer2);
|
|
botPlayer.add(botPlayer3);
|
|
|
|
try {
|
|
board = BoardLoaderUtil.loadBoard("boards/another_test_map.txt", bot);
|
|
Phase testPhase = new Phase(board, botPlayer, 0, testGame);
|
|
assertEquals(0, bot1.getDamageTaken());
|
|
testPhase.fireAllLasers();
|
|
assertEquals(1, bot1.getDamageTaken());
|
|
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void robotGetsRotatedByCog() throws InterruptedException {
|
|
FakeGame testGame = new FakeGame();
|
|
List<Robot> bot = new ArrayList<>();
|
|
List<Player> botPlayer = new ArrayList<>();
|
|
Position bot1Position = new Position(0, 0);
|
|
Position bot2Position = new Position(1, 0);
|
|
Robot bot1 = new Robot(RobotID.ROBOT_1, bot1Position);
|
|
Robot bot2 = new Robot(RobotID.ROBOT_2, bot2Position);
|
|
bot.add(bot1);
|
|
bot.add(bot2);
|
|
Player botPlayer1 = new Player(RobotID.ROBOT_1, "Player 1");
|
|
botPlayer.add(botPlayer1);
|
|
Player botPlayer2 = new Player(RobotID.ROBOT_2, "Player 2");
|
|
botPlayer.add(botPlayer2);
|
|
|
|
try {
|
|
board = BoardLoaderUtil.loadBoard("boards/another_test_map.txt", bot);
|
|
Phase testPhase = new Phase(board, botPlayer, 0, testGame);
|
|
assertEquals(Direction.NORTH, bot1.getFacingDirection());
|
|
testPhase.rotateCogwheels();
|
|
assertEquals(Direction.EAST, bot1.getFacingDirection());
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void programmingCardsGetsPlayedInOrder() throws InterruptedException {
|
|
List<ProgrammingCard> testProgram1 = new ArrayList<>();
|
|
List<ProgrammingCard> testProgram2 = new ArrayList<>();
|
|
List<ProgrammingCard> testProgram3 = new ArrayList<>();
|
|
testProgram1.add(new ProgrammingCard(1, Action.MOVE_1));
|
|
testProgram2.add(new ProgrammingCard(10, Action.MOVE_1));
|
|
testProgram3.add(new ProgrammingCard(100, Action.ROTATE_LEFT));
|
|
for (int i = 0; i < 4; i++) {
|
|
testProgram1.add(null);
|
|
testProgram2.add(null);
|
|
testProgram3.add(null);
|
|
}
|
|
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)));
|
|
}
|
|
|
|
/**
|
|
* Loads the test board to the variable and creates a new phase
|
|
*
|
|
* @param players A list of players participating in the game
|
|
* @param robots A list of robots on the board
|
|
* @return A phase object
|
|
*/
|
|
private Phase createPhaseAndLoadBoard(List<Player> players, List<Robot> robots) throws IOException {
|
|
board = BoardLoaderUtil.loadBoard("boards/test_board.txt", robots);
|
|
return new Phase(board, players, 0, null);
|
|
}
|
|
|
|
@Test
|
|
public void robotsOnConveyorBeltsFacingTheSameEmptyTileDoesNotMove() throws InterruptedException, IOException {
|
|
List<Robot> robots = new ArrayList<>();
|
|
List<Player> players = new ArrayList<>();
|
|
robots.add(new Robot(RobotID.ROBOT_1, new Position(8, 11)));
|
|
robots.add(new Robot(RobotID.ROBOT_2, new Position(7, 10)));
|
|
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
|
players.add(new Player(RobotID.ROBOT_2, "Player 2"));
|
|
|
|
Phase testPhase = createPhaseAndLoadBoard(players, robots);
|
|
testPhase.moveAllConveyorBelts();
|
|
|
|
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(8, 11)));
|
|
assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(7, 10)));
|
|
}
|
|
|
|
@Test
|
|
public void robotsOnConveyorBeltsFacingTheSameHoleTileDoesNotMove() throws IOException, InterruptedException {
|
|
List<Robot> robots = new ArrayList<>();
|
|
List<Player> players = new ArrayList<>();
|
|
robots.add(new Robot(RobotID.ROBOT_1, new Position(6, 7)));
|
|
robots.add(new Robot(RobotID.ROBOT_2, new Position(7, 8)));
|
|
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
|
players.add(new Player(RobotID.ROBOT_2, "Player 2"));
|
|
|
|
Phase testPhase = createPhaseAndLoadBoard(players, robots);
|
|
testPhase.moveAllConveyorBelts();
|
|
|
|
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(6, 7)));
|
|
assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(7, 8)));
|
|
}
|
|
|
|
@Test
|
|
public void robotOnConveyorBeltsFacingWallDoesNotMove() throws IOException, InterruptedException {
|
|
List<Robot> robots = new ArrayList<>();
|
|
List<Player> players = new ArrayList<>();
|
|
robots.add(new Robot(RobotID.ROBOT_1, new Position(1, 1)));
|
|
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
|
|
|
Phase testPhase = createPhaseAndLoadBoard(players, robots);
|
|
testPhase.moveAllConveyorBelts();
|
|
|
|
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(1, 1)));
|
|
}
|
|
|
|
@Test
|
|
public void robotBehindAnotherRobotOnConveyorBeltsFacingWallDoesNotMove() throws IOException, InterruptedException {
|
|
List<Robot> robots = new ArrayList<>();
|
|
List<Player> players = new ArrayList<>();
|
|
robots.add(new Robot(RobotID.ROBOT_1, new Position(1, 1)));
|
|
robots.add(new Robot(RobotID.ROBOT_2, new Position(1, 2)));
|
|
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
|
players.add(new Player(RobotID.ROBOT_2, "Player 2"));
|
|
|
|
Phase testPhase = createPhaseAndLoadBoard(players, robots);
|
|
testPhase.moveAllConveyorBelts();
|
|
|
|
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(1, 1)));
|
|
assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(1, 2)));
|
|
}
|
|
|
|
@Test
|
|
public void robotBehindOtherRobotsOnSlowConveyorBeltsFacingEmptyTilesMoves() throws IOException, InterruptedException {
|
|
List<Robot> robots = new ArrayList<>();
|
|
List<Player> players = new ArrayList<>();
|
|
robots.add(new Robot(RobotID.ROBOT_1, new Position(5, 7)));
|
|
robots.add(new Robot(RobotID.ROBOT_2, new Position(5, 8)));
|
|
robots.add(new Robot(RobotID.ROBOT_3, new Position(5, 9)));
|
|
robots.add(new Robot(RobotID.ROBOT_4, new Position(5, 10)));
|
|
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
|
players.add(new Player(RobotID.ROBOT_2, "Player 2"));
|
|
players.add(new Player(RobotID.ROBOT_3, "Player 3"));
|
|
players.add(new Player(RobotID.ROBOT_4, "Player 4"));
|
|
|
|
Phase testPhase = createPhaseAndLoadBoard(players, robots);
|
|
testPhase.moveAllConveyorBelts();
|
|
|
|
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(5, 6)));
|
|
assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(5, 7)));
|
|
assertEquals(RobotID.ROBOT_3, board.getRobotOnPosition(new Position(5, 8)));
|
|
assertEquals(RobotID.ROBOT_4, board.getRobotOnPosition(new Position(5, 9)));
|
|
}
|
|
|
|
@Test
|
|
public void robotBehindOtherRobotsOnFastConveyorBeltsFacingEmptyTilesMoves() throws IOException, InterruptedException {
|
|
List<Robot> robots = new ArrayList<>();
|
|
List<Player> players = new ArrayList<>();
|
|
robots.add(new Robot(RobotID.ROBOT_1, new Position(4, 7)));
|
|
robots.add(new Robot(RobotID.ROBOT_2, new Position(4, 8)));
|
|
robots.add(new Robot(RobotID.ROBOT_3, new Position(4, 9)));
|
|
robots.add(new Robot(RobotID.ROBOT_4, new Position(4, 10)));
|
|
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
|
players.add(new Player(RobotID.ROBOT_2, "Player 2"));
|
|
players.add(new Player(RobotID.ROBOT_3, "Player 3"));
|
|
players.add(new Player(RobotID.ROBOT_4, "Player 4"));
|
|
|
|
Phase testPhase = createPhaseAndLoadBoard(players, robots);
|
|
testPhase.moveAllConveyorBelts();
|
|
|
|
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(4, 5)));
|
|
assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(4, 6)));
|
|
assertEquals(RobotID.ROBOT_3, board.getRobotOnPosition(new Position(4, 7)));
|
|
assertEquals(RobotID.ROBOT_4, board.getRobotOnPosition(new Position(4, 8)));
|
|
}
|
|
|
|
@Test
|
|
public void robotBehindOtherRobotsOnConveyorBeltsShapedAsARoundaboutMoves() throws IOException, InterruptedException {
|
|
long startTime = System.currentTimeMillis();
|
|
List<Robot> robots = new ArrayList<>();
|
|
List<Player> players = new ArrayList<>();
|
|
robots.add(new Robot(RobotID.ROBOT_1, new Position(1, 8)));
|
|
robots.add(new Robot(RobotID.ROBOT_2, new Position(2, 8)));
|
|
robots.add(new Robot(RobotID.ROBOT_3, new Position(2, 9)));
|
|
robots.add(new Robot(RobotID.ROBOT_4, new Position(1, 9)));
|
|
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
|
players.add(new Player(RobotID.ROBOT_2, "Player 2"));
|
|
players.add(new Player(RobotID.ROBOT_3, "Player 3"));
|
|
players.add(new Player(RobotID.ROBOT_4, "Player 4"));
|
|
|
|
Phase testPhase = createPhaseAndLoadBoard(players, robots);
|
|
testPhase.moveAllConveyorBelts();
|
|
|
|
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(1, 9)));
|
|
assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(1, 8)));
|
|
assertEquals(RobotID.ROBOT_3, board.getRobotOnPosition(new Position(2, 8)));
|
|
assertEquals(RobotID.ROBOT_4, board.getRobotOnPosition(new Position(2, 9)));
|
|
int elapsedTime = (int) Math.floor((System.currentTimeMillis() - startTime) / 1000f);
|
|
assertTrue(elapsedTime < 1);
|
|
}
|
|
|
|
@Test
|
|
public void robotOnConveyorBeltFacingHoleMovesAndDies() throws IOException, InterruptedException {
|
|
List<Robot> robots = new ArrayList<>();
|
|
List<Player> players = new ArrayList<>();
|
|
robots.add(new Robot(RobotID.ROBOT_1, new Position(6, 7)));
|
|
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
|
|
|
Phase testPhase = createPhaseAndLoadBoard(players, robots);
|
|
testPhase.moveAllConveyorBelts();
|
|
|
|
assertFalse(board.isRobotAlive(RobotID.ROBOT_1));
|
|
assertNull(board.getRobotOnPosition(new Position(6, 7)));
|
|
assertNull(board.getRobotOnPosition(new Position(7, 7)));
|
|
}
|
|
|
|
@Test
|
|
public void robotOnConveyorBeltFacingOutOfMapMovesAndDies() throws IOException, InterruptedException {
|
|
List<Robot> robots = new ArrayList<>();
|
|
List<Player> players = new ArrayList<>();
|
|
robots.add(new Robot(RobotID.ROBOT_1, new Position(7, 0)));
|
|
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
|
|
|
Phase testPhase = createPhaseAndLoadBoard(players, robots);
|
|
testPhase.moveAllConveyorBelts();
|
|
|
|
assertFalse(board.isRobotAlive(RobotID.ROBOT_1));
|
|
assertNull(board.getRobotOnPosition(new Position(7, 0)));
|
|
}
|
|
|
|
@Test
|
|
public void robotOnConveyorBeltFacingOutOfMapMovesIntoWallIsBlocked() throws IOException, InterruptedException {
|
|
List<Robot> robots = new ArrayList<>();
|
|
List<Player> players = new ArrayList<>();
|
|
robots.add(new Robot(RobotID.ROBOT_1, new Position(0, 0)));
|
|
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
|
|
|
Phase testPhase = createPhaseAndLoadBoard(players, robots);
|
|
testPhase.moveAllConveyorBelts();
|
|
|
|
assertTrue(board.isRobotAlive(RobotID.ROBOT_1));
|
|
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(0, 0)));
|
|
}
|
|
|
|
@Test
|
|
public void robotOnConveyorBeltFacingOutOfMapWithOneTileBetweenCanBeMoved() throws IOException, InterruptedException {
|
|
List<Robot> robots = new ArrayList<>();
|
|
List<Player> players = new ArrayList<>();
|
|
robots.add(new Robot(RobotID.ROBOT_1, new Position(10, 10)));
|
|
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
|
|
|
Phase testPhase = createPhaseAndLoadBoard(players, robots);
|
|
testPhase.moveAllConveyorBelts();
|
|
|
|
assertTrue(board.isRobotAlive(RobotID.ROBOT_1));
|
|
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(10, 11)));
|
|
}
|
|
}
|