diff --git a/BitBoard.cpp b/BitBoard.cpp index 6b26519..4c2d793 100644 --- a/BitBoard.cpp +++ b/BitBoard.cpp @@ -1,4 +1,4 @@ -#include "BitBoard.h" +#include "BitBoard.hpp" BitBoard::BitBoard(uint64_t v) { mBoard = v; diff --git a/BitBoard.h b/BitBoard.hpp similarity index 98% rename from BitBoard.h rename to BitBoard.hpp index b88cc2d..6ae9fd2 100644 --- a/BitBoard.h +++ b/BitBoard.hpp @@ -31,6 +31,9 @@ public: explicit constexpr operator bool() const { return mBoard != 0; } + explicit constexpr operator unsigned long() const { + return mBoard; + } explicit constexpr operator unsigned long long() const { return mBoard; } diff --git a/Board.hpp b/Board.hpp index ee9dccb..0680a41 100644 --- a/Board.hpp +++ b/Board.hpp @@ -5,7 +5,7 @@ #include "Square.hpp" #include "Move.hpp" #include "CastlingRights.hpp" -#include "BitBoard.h" +#include "BitBoard.hpp" #include #include diff --git a/Tests/BitBoardTest.cpp b/Tests/BitBoardTest.cpp new file mode 100644 index 0000000..cd03758 --- /dev/null +++ b/Tests/BitBoardTest.cpp @@ -0,0 +1,22 @@ +#include "catch2/catch.hpp" + +#include "TestUtils.hpp" + +#include "BitBoard.hpp" + +#include +#include + +TEST_CASE("King attacks are correctly generated", "[Board][Fundamental]") { + auto board = BitBoard::fromIndex(G2); + board |= BitBoard::fromIndex(B7); + + BitBoard ka = BitBoard::kingAttacks(board); + REQUIRE((ka == ( + BitBoard::fromIndex(G1) | BitBoard::fromIndex(G3) | BitBoard::fromIndex(H1) | BitBoard::fromIndex(H2) + | BitBoard::fromIndex(H3) | BitBoard::fromIndex(F1) | BitBoard::fromIndex(F2) + | BitBoard::fromIndex(F3) | + BitBoard::fromIndex(B8) | BitBoard::fromIndex(B6) | BitBoard::fromIndex(A6) + | BitBoard::fromIndex(A7) | BitBoard::fromIndex(A8) | BitBoard::fromIndex(C6) + | BitBoard::fromIndex(C7) | BitBoard::fromIndex(C8)))); +} \ No newline at end of file diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 9a231f7..94b1b39 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -8,6 +8,7 @@ add_executable(tests BoardTests.cpp FenTests.cpp EngineTests.cpp + BitBoardTest.cpp ) target_link_libraries(tests cplchess_lib Catch2::Catch2)