Exemple #1
0
 def test_mutates_game_state(self):
     game = Game()
     moves = Moves(game)
     assert moves.game is game
     assert moves.game.state is game.state
     moves.perform({"position": [1, 1], "player": "X"})
     self.assertEqual(len(game.state["moves"]), 1)
 def test_diagonal_victory(self):
     game = Game()
     victory = Victory(game)
     moves = Moves(game)
     winning_line = [[1, 1], [2, 2], [3, 3]]
     winning_moves = [{
         "player": "X",
         "position": position
     } for position in winning_line]
     moves.perform_all(winning_moves)
     assert victory.is_present()
 def test_second_row_victory(self):
     game = Game()
     victory = Victory(game)
     moves = Moves(game)
     winning_line = [[2, 1], [2, 2], [2, 3]]
     winning_moves = [{
         "player": "X",
         "position": position
     } for position in winning_line]
     moves.perform_all(winning_moves)
     self.assertEquals(victory.winning_symbol(), "X")
 def test_victory_has_winner(self):
     game = Game()
     victory = Victory(game)
     moves = Moves(game)
     # create a winning line consisting of the top row
     winning_line = ThroughLine(game).rows()[0]
     winning_moves = [{
         "player": "X",
         "position": position
     } for position in winning_line]
     moves.perform_all(winning_moves)
     self.assertEquals(victory.winning_symbol(), "X")
 def test_victory_by_filled_row(self):
     game = Game()
     victory = Victory(game)
     moves = Moves(game)
     # create a winning line consisting of the top row
     winning_line = [[1, 1], [1, 2], [1, 3]]
     winning_moves = [{
         "player": "X",
         "position": position
     } for position in winning_line]
     moves.perform_all(winning_moves)
     assert victory.is_present()
 def test_three_moves_required(self):
     game = Game()
     moves = Moves(game)
     victory = Victory(game)
     # create a winning line consisting of the top row
     winning_line = ThroughLine(game).rows()[0]
     winning_moves = [{
         "player": "X",
         "position": position
     } for position in winning_line]
     for move in winning_moves:
         moves.perform(move)
         assert not victory.is_present() or move["position"] == [1, 3]
Exemple #7
0
 def test_empty_positions_list(self):
     game = Game()
     moves = Moves(game)
     self.assertEqual(len(moves.get_empty_positions()), 9)
     move = {"position": [1, 1], "player": "X"}
     assert move["position"] not in moves.get_occupied_positions()
     moves.perform(move)
     assert move["position"] not in moves.get_empty_positions()
     self.assertEqual(len(moves.get_empty_positions()), 8)
Exemple #8
0
 def test_move_must_be_within_board(self):
     game = Game()
     moves = Moves(game)
     move = {"position": [-1, 2], "player": "X"}
     self.assertRaises(
         Exception,
         moves.valid,
     )
Exemple #9
0
 def test_player_from_symbol(self):
    game = Game()
    player = Player(game)
    Moves(game).perform({
      "player": "X",
      "position": [1,1]
    })
    self.assertEqual(player.player_from_symbol("X"),
                     player.get_players()[0])
Exemple #10
0
 def test_occupied_position_has_player(self):
     game = Game()
     moves = Moves(game)
     move = {"position": [1, 1], "player": "X"}
     moves.perform(move)
     self.assertEqual(moves.symbol_at([1, 1]), "X")
Exemple #11
0
 def test_position_occupied_after_moving(self):
     game = Game()
     moves = Moves(game)
     move = {"position": [1, 1], "player": "X"}
     moves.perform(move)
     assert moves.is_occupied(move['position'])
Exemple #12
0
 def test_position_not_occupied_before_moving(self):
     game = Game()
     moves = Moves(game)
     board = Board(game)
     for position in board.positions():
         assert not moves.is_occupied(position)