From 2e2d84dc87f715d34e9bdcc61b344cbfc1152e0f Mon Sep 17 00:00:00 2001 From: winapiadmin <138602885+winapiadmin@users.noreply.github.com> Date: Sun, 1 Mar 2026 11:56:11 +0700 Subject: [PATCH 1/2] Update cmake-multi-platform.yml --- .github/workflows/cmake-multi-platform.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake-multi-platform.yml b/.github/workflows/cmake-multi-platform.yml index 0402087..99e8d56 100644 --- a/.github/workflows/cmake-multi-platform.yml +++ b/.github/workflows/cmake-multi-platform.yml @@ -9,7 +9,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: - fail-fast: false + fail-fast: true matrix: os: [ubuntu-latest, windows-latest] build_type: [Debug, Release] From d31c160c3224e4b59df4602c7b59a043359dc8ff Mon Sep 17 00:00:00 2001 From: winapiadmin <138602885+winapiadmin@users.noreply.github.com> Date: Sun, 1 Mar 2026 11:59:39 +0700 Subject: [PATCH 2/2] Update tests.cpp --- tests.cpp | 118 +++++++++++++++++++++++++++--------------------------- 1 file changed, 60 insertions(+), 58 deletions(-) diff --git a/tests.cpp b/tests.cpp index 179d80d..6463d57 100644 --- a/tests.cpp +++ b/tests.cpp @@ -364,6 +364,65 @@ TEST_CASE("Move making pin update") { REQUIRE(pin_mask == 0x8040201000000ULL); } } + +TEST_CASE("Experienced bugs in this repo") { + { + Position p("rnbqkbnr/pp1p1ppp/8/2pPp3/8/8/PPP1PPPP/RNBQKBNR w KQkq e6 0 3"); + REQUIRE(p.zobrist() == p.hash()); + REQUIRE(p.hash() == 11114434025341711937ULL); + } + { + Position p("rnbqkbnr/pppp1ppp/8/3PpP2/8/8/PPP2PPP/RNBQKBNR w KQkq e6 0 2"); + REQUIRE(p.zobrist() == p.hash()); + REQUIRE(p.hash() == 11926398512926811756ULL); + } + { + Position p("r4rk1/2p1qpp1/p1np1n1p/1pb1p1B1/P1B1P1b1/1PNP1N2/2P1QPPP/R4RK1 w - - 0 12"); + REQUIRE(p.zobrist() == p.hash()); + REQUIRE(p.hash() == 221975837765752100ULL); + } + { + Position p("rnbqkbnr/ppp1p1pp/8/3pPp2/8/8/PPPP1PPP/RNBQKBNR w KQkq d6 0 3"); + REQUIRE(p.zobrist() == p.hash()); + p.push_uci("e5d6"); + REQUIRE(p.zobrist() == p.hash()); + } + { + Position p("rnbqkbnr/ppppp1pp/8/4Pp2/8/8/PPPP1PPP/RNBQKBNR b KQkq - 0 2"); + REQUIRE(p.zobrist() == p.hash()); + p.push_uci("d7d5"); + REQUIRE(p.zobrist() == p.hash()); + } + { + Position p; + p.doMove(Move(SQ_A2, SQ_A3)); + p.doMove(Move(SQ_B8, SQ_A6)); + p.doMove(Move(SQ_F2, SQ_F3)); + p.doMove(Move(SQ_F7, SQ_F5)); + REQUIRE(p.zobrist() == p.hash()); + REQUIRE(p.hash() == 4177524090105507023); + } + { + Position p; + REQUIRE(p.getCastlingPath(WHITE, true) == 0x60); + REQUIRE(p.getCastlingPath(WHITE, false) == 0xe); + REQUIRE(p.getCastlingPath(BLACK, true) == 0x6000000000000000ULL); + REQUIRE(p.getCastlingPath(BLACK, false) == 0xe00000000000000ULL); + } + { + Position p; + p.setFEN("1nbqkbnr/1ppppppp/r7/8/4P3/8/PPPP1PPP/RNBQK1NR w KQk - 0 3"); + REQUIRE(p.fen() == "1nbqkbnr/1ppppppp/r7/8/4P3/8/PPPP1PPP/RNBQK1NR w KQk - 0 3"); + } +} +TEST_CASE("Captures only?") { + std::vector> tests = { + { "rn1qkbnr/ppp1pppp/3p4/6B1/6b1/3P4/PPP1PPPP/RN1QKBNR w KQkq - 2 3", 17, 6732 }, + { "rn1qkbnr/ppp1pppp/3p4/6B1/6b1/3P4/PPP1PPPP/RN1QKBNR w KQkq - 2 3", 30, 360 }, + { "2b5/2p5/8/8/5B1k/q7/2K5/8 w - - 0 1", 1, 1 } + }; + check_perfts(tests); +} TEST_CASE("Perfts") { std::vector> tests = { { "5k2/8/8/8/3K4/8/8/8 w - - 0 1", 1, 8 }, @@ -1286,64 +1345,6 @@ TEST_CASE("Perfts") { }; check_perfts(tests); } -TEST_CASE("Experienced bugs in this repo") { - { - Position p("rnbqkbnr/pp1p1ppp/8/2pPp3/8/8/PPP1PPPP/RNBQKBNR w KQkq e6 0 3"); - REQUIRE(p.zobrist() == p.hash()); - REQUIRE(p.hash() == 11114434025341711937ULL); - } - { - Position p("rnbqkbnr/pppp1ppp/8/3PpP2/8/8/PPP2PPP/RNBQKBNR w KQkq e6 0 2"); - REQUIRE(p.zobrist() == p.hash()); - REQUIRE(p.hash() == 11926398512926811756ULL); - } - { - Position p("r4rk1/2p1qpp1/p1np1n1p/1pb1p1B1/P1B1P1b1/1PNP1N2/2P1QPPP/R4RK1 w - - 0 12"); - REQUIRE(p.zobrist() == p.hash()); - REQUIRE(p.hash() == 221975837765752100ULL); - } - { - Position p("rnbqkbnr/ppp1p1pp/8/3pPp2/8/8/PPPP1PPP/RNBQKBNR w KQkq d6 0 3"); - REQUIRE(p.zobrist() == p.hash()); - p.push_uci("e5d6"); - REQUIRE(p.zobrist() == p.hash()); - } - { - Position p("rnbqkbnr/ppppp1pp/8/4Pp2/8/8/PPPP1PPP/RNBQKBNR b KQkq - 0 2"); - REQUIRE(p.zobrist() == p.hash()); - p.push_uci("d7d5"); - REQUIRE(p.zobrist() == p.hash()); - } - { - Position p; - p.doMove(Move(SQ_A2, SQ_A3)); - p.doMove(Move(SQ_B8, SQ_A6)); - p.doMove(Move(SQ_F2, SQ_F3)); - p.doMove(Move(SQ_F7, SQ_F5)); - REQUIRE(p.zobrist() == p.hash()); - REQUIRE(p.hash() == 4177524090105507023); - } - { - Position p; - REQUIRE(p.getCastlingPath(WHITE, true) == 0x60); - REQUIRE(p.getCastlingPath(WHITE, false) == 0xe); - REQUIRE(p.getCastlingPath(BLACK, true) == 0x6000000000000000ULL); - REQUIRE(p.getCastlingPath(BLACK, false) == 0xe00000000000000ULL); - } - { - Position p; - p.setFEN("1nbqkbnr/1ppppppp/r7/8/4P3/8/PPPP1PPP/RNBQK1NR w KQk - 0 3"); - REQUIRE(p.fen() == "1nbqkbnr/1ppppppp/r7/8/4P3/8/PPPP1PPP/RNBQK1NR w KQk - 0 3"); - } -} -TEST_CASE("Captures only?") { - std::vector> tests = { - { "rn1qkbnr/ppp1pppp/3p4/6B1/6b1/3P4/PPP1PPPP/RN1QKBNR w KQkq - 2 3", 17, 6732 }, - { "rn1qkbnr/ppp1pppp/3p4/6B1/6b1/3P4/PPP1PPPP/RN1QKBNR w KQkq - 2 3", 30, 360 }, - { "2b5/2p5/8/8/5B1k/q7/2K5/8 w - - 0 1", 1, 1 } - }; - check_perfts(tests); -} TEST_CASE("Chess960") { std::vector> tests = { { "bqnb1rkr/pp3ppp/3ppn2/2p5/5P2/P2P4/NPP1P1PP/BQ1BNRKR w HFhf - 2 9", 1, 21 }, @@ -7113,5 +7114,6 @@ int main(int argc, char **argv) { doctest::Context ctx; ctx.setOption("success", true); ctx.setOption("no-breaks", true); + ctx.setOption("abort-after", 1); return ctx.run(); }