def test_attack_cell_kill_one_of_two_ships(self): game = Game() game.opponent_grid[5][5] = GameCell.SHIP.value game.opponent_grid[3][3] = GameCell.SHIP.value game.save() result = game.attack_cell(5, 5) self.assertEqual(AttackStatus.KILLED, result.attack_status) self.assertEqual(GameStatus.IN_PROGRESS.value, game.game_status) self.assertEqual(GameCell.KILLED.value, game.opponent_grid[5][5]) self.assertEqual(GameCell.MISSED.value, game.opponent_grid[5][6]) self.assertEqual(GameCell.MISSED.value, game.opponent_grid[5][4]) self.assertEqual(GameCell.MISSED.value, game.opponent_grid[6][5]) self.assertEqual(GameCell.MISSED.value, game.opponent_grid[4][5]) self.assertEqual(GameCell.MISSED.value, game.opponent_grid[6][6]) self.assertEqual(GameCell.MISSED.value, game.opponent_grid[4][4]) self.assertEqual(GameCell.MISSED.value, game.opponent_grid[6][4]) self.assertEqual(GameCell.MISSED.value, game.opponent_grid[4][6])
def test_attack_cell_kill_center_ship(self): game = Game() game.opponent_grid[5][5] = GameCell.SHIP.value game.save() result = game.attack_cell(5, 5) self.assertEqual(AttackStatus.KILLED, result.attack_status) self.assertEqual(GameStatus.FINISHED.value, game.game_status) self.assertEqual(GameCell.KILLED.value, game.opponent_grid[5][5]) self.assertEqual(GameCell.MISSED.value, game.opponent_grid[5][6]) self.assertEqual(GameCell.MISSED.value, game.opponent_grid[5][4]) self.assertEqual(GameCell.MISSED.value, game.opponent_grid[6][5]) self.assertEqual(GameCell.MISSED.value, game.opponent_grid[4][5]) self.assertEqual(GameCell.MISSED.value, game.opponent_grid[6][6]) self.assertEqual(GameCell.MISSED.value, game.opponent_grid[4][4]) self.assertEqual(GameCell.MISSED.value, game.opponent_grid[6][4]) self.assertEqual(GameCell.MISSED.value, game.opponent_grid[4][6])
def test_new_game_defaults(self): game = Game() self.assertEqual(GameStatus.IN_PROGRESS.value, game.game_status) self.assertEqual(Game.GRID_SIZE, len(game.opponent_grid))
def test_attack_cell_in_finished_game(self): game = Game(game_status=GameStatus.FINISHED.value) game.save() result = game.attack_cell(2, 3) self.assertEqual(AttackStatus.INVALID, result.attack_status)