class TestInitialPossibleMoves(unittest.TestCase): """ Introduced after a bug in a move found """ def test_white(self): self.board = Board(player_down="W", create=True) self.game_engine = GameEngine(self.board) assert self.board.player_down is "W" # all possible moves at start assert len([k for i in self.game_engine.possible_moves().values() for k in i]) == 20 def test_black(self): self.board = Board(player_down="B", create=True) self.game_engine = GameEngine(self.board) assert self.board.player_down is "B" # all possible moves at start assert len([k for i in self.game_engine.possible_moves().values() for k in i]) == 20
class TestModernDefence(unittest.TestCase): """ http://www.chess.com/opening/eco/B06_Modern_Defense_Standard_Defense """ def setUp(self): self.board = Board(player_down="W", create=True) self.game_engine = GameEngine(self.board) def test_moves(self): assert self.board.player_down is "W" # all possible moves at start assert len([k for i in self.game_engine.possible_moves().values() for k in i]) == 20 assert self.game_engine.move((4, 6), (4, 4), "W") assert self.game_engine.move((6, 1), (6, 2), "B") assert self.game_engine.move((3, 6), (3, 4), "W") assert self.game_engine.move((5, 0), (6, 1), "B") assert self.game_engine.move((1, 7), (2, 5), "W") assert self.game_engine.move((3, 1), (3, 2), "B") self.assertRaises(Exception, self.wrong_player_moved) assert len(self.board.moves) is 6 assert self.board.turn is "W" # undo all moves for i in range(0, len(self.board.moves)): self.game_engine.undo() # assert undo was fine assert self.board == Board(player_down="W", create=True) assert not self.board == Board(player_down="B", create=True) assert self.board.turn is "W" assert not self.board.moves def wrong_player_moved(self): # TODO move in separate class and make it generic, for now its fine assert self.game_engine.move((0, 1), (0, 2), "B")