def test_get_next_turn(self): self.assertEqual(get_next_turn(self.game), self.x) move(self.game, self.x, position=(0, 0)) self.assertEqual(get_next_turn(self.game), self.o)
def test_play_invalid_position(self): with self.assertRaisesRegexp(InvalidMovement, 'Position out of range.'): move(self.game, self.x, position=(9, 8))
def test_play_position_already_taken(self): move(self.game, self.x, position=(0, 0)) with self.assertRaisesRegexp(InvalidMovement, 'Position already taken.'): move(self.game, self.o, position=(0, 0))
def test_play_O_wins(self): # [ # ["O", "X", "X"], # ["X", "O", "-"], # ["-", "-", "O"], <--- "O" wins # ] move(self.game, self.x, position=(0, 1)) move(self.game, self.o, position=(0, 0)) move(self.game, self.x, position=(0, 2)) move(self.game, self.o, position=(1, 1)) move(self.game, self.x, position=(1, 0)) with self.assertRaisesRegexp(GameOver, '"O" wins!'): move(self.game, self.o, position=(2, 2)) self.assertEqual(get_winner(self.game), self.o) with self.assertRaisesRegexp(InvalidMovement, 'Game is over'): move(self.game, self.x, position=(2, 0))
def test_play_one_player_moves_twice(self): move(self.game, self.x, position=(0, 1)) with self.assertRaisesRegexp(InvalidMovement, '"O" moves next'): move(self.game, self.x, position=(0, 0))
def test_play_no_winner(self): # [ # ["X", "O", "X"], # ["O", "O", "X"], # ["X", "X", "O"], # ] move(self.game, self.x, position=(0, 0)) move(self.game, self.o, position=(0, 1)) move(self.game, self.x, position=(0, 2)) move(self.game, self.o, position=(1, 0)) move(self.game, self.x, position=(1, 2)) move(self.game, self.o, position=(1, 1)) move(self.game, self.x, position=(2, 0)) move(self.game, self.o, position=(2, 2)) with self.assertRaisesRegexp(GameOver, 'Game is tied!'): move(self.game, self.x, position=(2, 1)) self.assertEqual(get_winner(self.game), None) self.assertTrue(_board_is_full(self.game['board'])) with self.assertRaisesRegexp(InvalidMovement, 'Game is over.'): move(self.game, self.o, position=(0, 0))