summaryrefslogtreecommitdiff
path: root/src/engine/moves/king.c
diff options
context:
space:
mode:
authorAargh Rai <aargh.rai+git@gmail.com>2026-06-01 13:25:24 +0530
committerAargh Rai <aargh.rai+git@gmail.com>2026-06-01 13:25:24 +0530
commitd2af19a9ee217f55de12a303d9d6283c76fe446b (patch)
tree299d98ee479b2d33bd6a580530a3309e0cd9f9e9 /src/engine/moves/king.c
parent29822a5d0f63bf0c1b34da636ddf27ecf22ca3cb (diff)
fixed knight + fixed comms
Diffstat (limited to 'src/engine/moves/king.c')
-rw-r--r--src/engine/moves/king.c82
1 files changed, 81 insertions, 1 deletions
diff --git a/src/engine/moves/king.c b/src/engine/moves/king.c
index 9ce3eb8..29bca79 100644
--- a/src/engine/moves/king.c
+++ b/src/engine/moves/king.c
@@ -1,7 +1,8 @@
#include "../moves.h"
+#include <stdio.h>
void get_king_moves(moves_t* moves, position_t position) {
- assert_valid_position(position);
+ // assert_valid_position(position);
bitboard_t friendly_king;
int king_square;
@@ -34,3 +35,82 @@ void get_king_moves(moves_t* moves, position_t position) {
add_move(moves, king_square, to);
}
}
+
+#ifdef TEST_MOD
+#include <stdbool.h>
+#include "vec.c"
+
+bool test_white_king_corners() {
+ moves_t moves = moves_init();
+ position_t p = {0};
+ p.bitboards[WHITE_KING] = 1;
+ p.turn = WHITE_TURN;
+ get_king_moves(&moves, p);
+ if (moves.length != 3) return false;
+ if (moves.moves[0].from != 0) return false;
+ if (moves.moves[0].to != 1) return false;
+ if (moves.moves[1].from != 0) return false;
+ if (moves.moves[1].to != 8) return false;
+ if (moves.moves[2].from != 0) return false;
+ if (moves.moves[2].to != 9) return false;
+ moves.length = 0;
+ p.bitboards[WHITE_KING] = 128;
+ get_king_moves(&moves, p);
+ if (moves.length != 3) return false;
+ if (moves.moves[0].from != 7) return false;
+ if (moves.moves[0].to != 6) return false;
+ if (moves.moves[1].from != 7) return false;
+ if (moves.moves[1].to != 14) return false;
+ if (moves.moves[2].from != 7) return false;
+ if (moves.moves[2].to != 15) return false;
+ moves.length = 0;
+ p.bitboards[WHITE_KING] = 72057594037927936ULL;
+ get_king_moves(&moves, p);
+ if (moves.length != 3) return false;
+ if (moves.moves[0].from != 56) return false;
+ if (moves.moves[0].to != 48) return false;
+ if (moves.moves[1].from != 56) return false;
+ if (moves.moves[1].to != 49) return false;
+ if (moves.moves[2].from != 56) return false;
+ if (moves.moves[2].to != 57) return false;
+
+ return true;
+}
+
+bool test_black_king_corners() {
+ moves_t moves = moves_init();
+ position_t p = {0};
+ p.bitboards[BLACK_KING] = 1;
+ p.turn = BLACK_TURN;
+ get_king_moves(&moves, p);
+ if (moves.length != 3) return false;
+ if (moves.moves[0].from != 0) return false;
+ if (moves.moves[0].to != 1) return false;
+ if (moves.moves[1].from != 0) return false;
+ if (moves.moves[1].to != 8) return false;
+ if (moves.moves[2].from != 0) return false;
+ if (moves.moves[2].to != 9) return false;
+ moves.length = 0;
+ p.bitboards[BLACK_KING] = 128;
+ get_king_moves(&moves, p);
+ if (moves.length != 3) return false;
+ if (moves.moves[0].from != 7) return false;
+ if (moves.moves[0].to != 6) return false;
+ if (moves.moves[1].from != 7) return false;
+ if (moves.moves[1].to != 14) return false;
+ if (moves.moves[2].from != 7) return false;
+ if (moves.moves[2].to != 15) return false;
+ moves.length = 0;
+ p.bitboards[BLACK_KING] = 72057594037927936ULL;
+ get_king_moves(&moves, p);
+ if (moves.length != 3) return false;
+ if (moves.moves[0].from != 56) return false;
+ if (moves.moves[0].to != 48) return false;
+ if (moves.moves[1].from != 56) return false;
+ if (moves.moves[1].to != 49) return false;
+ if (moves.moves[2].from != 56) return false;
+ if (moves.moves[2].to != 57) return false;
+
+ return true;
+}
+#endif