diff --git a/src/binbo_position.erl b/src/binbo_position.erl index 095f47d..4ee920b 100644 --- a/src/binbo_position.erl +++ b/src/binbo_position.erl @@ -754,15 +754,7 @@ update_hashmap(Game) -> %% https://en.wikipedia.org/wiki/Fifty-move_rule -spec is_rule50(bb_game()) -> boolean(). is_rule50(Game) -> - case (get_halfmove(Game) < 50) of - true -> - false; - false -> - case (get_fullmove(Game) < 75) of - true -> false; - false -> true - end - end. + get_halfmove(Game) > 99. %% is_k_vs_k/2 %% Returns true when: diff --git a/test/play_game_SUITE.erl b/test/play_game_SUITE.erl index c091ca6..9391700 100644 --- a/test/play_game_SUITE.erl +++ b/test/play_game_SUITE.erl @@ -24,6 +24,7 @@ -export([move_all_pieces/1, checkmate_white/1, checkmate_black/1, stalemate_white/1, stalemate_black/1, + rule50/1, castling_kingside/1, castling_queenside/1, castling_white_after_king_move/1, castling_white_after_rook_move/1, @@ -152,6 +153,14 @@ stalemate_black(Config) -> {ok, {draw,stalemate}} = binbo:game_status(Pid), ok. +%% rule50/1 +rule50(Config) -> + Pid = get_pid(Config), + {ok, continue} = binbo:new_game(Pid, <<"6R1/7k/8/8/1r3B2/5K2/8/8 w - - 99 119">>), + {ok, {draw,rule50}} = binbo:move(Pid, <<"Ra4">>), + {ok, {draw,rule50}} = binbo:game_status(Pid), + ok. + %% castling_kingside/1 castling_kingside(Config) -> Pid = get_pid(Config),