def test_get_san_description_illegal_move_promotion(self): fen = "rnbqkbnr/pppp1ppp/8/8/2B1P3/2N5/Pp3PPP/R1BQK1NR b KQkq - 0 1" board = chess.Board(fen) move = "bxc1=K" value = get_san_description(board, move) assert value == "illegal" assert board.fen() == fen move = "b1" # Promotion piece not mentioned value = get_san_description(board, move) assert value == "illegal" assert board.fen() == fen
def handle_san_and_get_response_kwargs(session_id: str, board: chess.Board, san: str) -> Dict[str, Any]: """Process a SAN move and get response kwargs""" status = get_san_description(board, san) if status == "legal": # Convert SAN to LAN move = board.parse_san(san) lan = board.lan(move) mediator.play_lan(session_id, lan) kwargs = get_response_kwargs(session_id, lastmove_lan=lan) elif status == "ambiguous": kwargs = { "textToSpeech": f"The move {san} is ambiguous. Please clarify by" " giving more details about the move." } elif status == "illegal": kwargs = { "textToSpeech": f"The move {san} is not legal. Please try again." " You can always ask me to 'show the board' if you feel lost." } elif status == "invalid": kwargs = {"textToSpeech": f"The move {san} is not valid."} return kwargs
def test_get_san_description_ambiguous_move(self): fen = ( "r1bqkbnr/pp1ppppp/2n5/2p5/4P3/2N5/PPPP1PPP/R1BQKBNR w KQkq - 0 1") board = chess.Board(fen) move = "Ne2" # Both Nge2 and Nce2 are possible value = get_san_description(board, move) assert value == "ambiguous" assert board.fen() == fen move = "Nge2" value = get_san_description(board, move) assert value == "legal" assert board.fen() == fen
def test_get_san_description_legal_move(self): fen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1" board = chess.Board(fen) move = "e4" value = get_san_description(board, move) assert value == "legal" assert board.fen() == fen
def test_get_san_description_illegal_move(self): fen = ( "r1bqkbnr/pppp1ppp/2n5/4p3/4P3/5N2/PPPP1PPP/RNBQKB1R w KQkq - 0 1") board = chess.Board(fen) move = "d5" value = get_san_description(board, move) assert value == "illegal" assert board.fen() == fen
def test_get_san_description_invalid_move(self): fen = ( "rnbqk2r/pp2bppp/2p2n2/3p2B1/3P4/2NBP3/PP3PPP/R2QK1NR b KQkq - 0 1" ) board = chess.Board(fen) move = "a9" value = get_san_description(board, move) assert value == "invalid" assert board.fen() == fen