From 695c8f5b8e9140d5e96f308f14eaede8ffb4dc34 Mon Sep 17 00:00:00 2001 From: Tait Hoyem <44244401+TTWNO@users.noreply.github.com> Date: Mon, 29 Apr 2019 17:45:23 +0000 Subject: [PATCH] Improve preformace. Add tests. --- src/functions.cpp | 2 +- tests/main.cpp | 5 +++++ tests/valid_moves.h | 21 +++++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/functions.cpp b/src/functions.cpp index d5a44a7..8d7b5cc 100644 --- a/src/functions.cpp +++ b/src/functions.cpp @@ -181,7 +181,7 @@ void filter_checked_moves(PieceType pt, const std::array& board, } // Make move std::array moved_board; - dumb_move(*p_pn, board, moved_board); + dumb_move(*p_pn, board, moved_board); // This is for when the king is the same piece that is moving. // If this is the case, reset to king position to the new position given by the get_to_sq() of the move. if (pt == my_king){ diff --git a/tests/main.cpp b/tests/main.cpp index d457402..95d0a8c 100644 --- a/tests/main.cpp +++ b/tests/main.cpp @@ -308,3 +308,8 @@ TEST_CASE("Test for add_checked_flags is working correctly.", "[get_all_moves][a CHECK(get_checked_flags(rook_checked_flags) == ROOK_CHECK_FLAGS); } +TEST_CASE("Test that kings cannot move backwards into check", "[get_all_moves]"){ + auto king_back_checked = get_all_moves(BACK_CHECK_POS, BACK_CHECK_BOARD); + + CHECK(get_to_squares(king_back_checked) == BACK_CHECK_KING_MOVES); +} diff --git a/tests/valid_moves.h b/tests/valid_moves.h index 339d98b..a15a4b3 100644 --- a/tests/valid_moves.h +++ b/tests/valid_moves.h @@ -917,3 +917,24 @@ const std::vector ROOK_CHECK_FLAGS = { 0, 1 }; +// This tests that kings cannot move backward into check from check +const int BACK_CHECK_POS = E6; +const std::array BACK_CHECK_BOARD = { + INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, + INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, + INV, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, INV, + INV, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, INV, + INV, NONE, NONE, NONE, NONE, B_KING, NONE, NONE, NONE, INV, + INV, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, INV, + INV, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, INV, + INV, NONE, NONE, NONE, NONE, W_ROOK, NONE, NONE, NONE, INV, + INV, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, INV, + INV, NONE, NONE, NONE, NONE, NONE, NONE, NONE, NONE, INV, + INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, + INV, INV, INV, INV, INV, INV, INV, INV, INV, INV +}; +const std::vector BACK_CHECK_KING_MOVES = { + D7, F7, + D5, F5, + F6, D6 +};