Introduction
Introduction Statistics Contact Development Disclaimer Help
fix a bug in FEN en passant parsing, handle en passant takes - chess-puzzles - …
git clone git://git.codemadness.org/chess-puzzles
Log
Files
Refs
README
LICENSE
---
commit 10e231516543327f556abc8b73c31c1e114ede48
parent f2415a87c11df764bacefa67d70efd1c57bd66ff
Author: Hiltjo Posthuma <[email protected]>
Date: Wed, 20 Dec 2023 23:53:58 +0100
fix a bug in FEN en passant parsing, handle en passant takes
Add a few tests for them.
Diffstat:
M fen.c | 8 ++++++--
M tests.sh | 10 +++++++++-
2 files changed, 15 insertions(+), 3 deletions(-)
---
diff --git a/fen.c b/fen.c
@@ -549,8 +549,7 @@ next:
break;
case 3: /* en passant square */
if (*s >= 'a' && *s <= 'h' &&
- *(s + 1) >= '1' && *(s + 1) >= '6') {
-
+ *(s + 1) >= '1' && *(s + 1) <= '6') {
square[0] = *s;
square[1] = *(s + 1);
square[2] = '\0';
@@ -599,6 +598,7 @@ next:
/* process moves */
square[2] = '\0';
x = y = x2 = y2 = -1;
+
for (s = moves; *s; s++) {
if (*s == ' ')
continue;
@@ -677,6 +677,10 @@ next:
black_can_castle[0] = 0;
}
+ /* taken en passant? */
+ if (x2 == enpassantsquare[0] && y2 == enpassantsquare[…
+ place(0, x2, piece == 'P' ? y2 + 1 : y2 - 1);
+
/* the en passant square resets after a move */
enpassantsquare[0] = -1;
enpassantsquare[1] = -1;
diff --git a/tests.sh b/tests.sh
@@ -6,7 +6,7 @@ testfen() {
fen="$2"
moves="$3"
- output=$(./fen_to_fen "$fen" "$moves")
+ output=$(./fen -o fen "$fen" "$moves")
if test "$output" = "$expect"; then
echo "OK"
else
@@ -78,3 +78,11 @@ testfen 'r4k1r/ppp1p1p1/8/2Pp1p2/6P1/4P2p/PP1P1P1P/R3K2R w -…
testfen 'r4k1r/p1ppp1p1/8/1pP2p2/6P1/4P2p/PP1P1P1P/R3K2R w - b6 0 9'\
'r4k1r/ppppp1p1/8/2P2p2/6P1/4P2p/PP1P1P1P/R3K2R b - - 0 8'\
'b7b5'
+# white takes en passant
+testfen 'rnbqkbnr/pppp1pp1/4P3/7p/8/8/PPP1PPPP/RNBQKBNR b KQkq - 0 3'\
+ 'rnbqkbnr/pppp1pp1/8/3Pp2p/8/8/PPP1PPPP/RNBQKBNR w KQkq e6 0 3'\
+ 'd5e6'
+# black takes en passant
+testfen 'rnbqkbnr/ppppppp1/8/8/3P4/4P1p1/PPP2P1P/RNBQKBNR w KQkq - 0 4'\
+ 'rnbqkbnr/ppppppp1/8/8/3P2Pp/4P3/PPP2P1P/RNBQKBNR b KQkq g3 0 3'\
+ 'h4g3'
You are viewing proxied material from codemadness.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.