Merge branch 'main' into rename-board-crate
# Conflicts: # explorer/src/main.rs
This commit is contained in:
commit
569693bda9
8 changed files with 138 additions and 34 deletions
|
@ -28,4 +28,18 @@ macro_rules! test_position {
|
|||
pos
|
||||
}
|
||||
};
|
||||
(empty) => {
|
||||
{
|
||||
let pos = Position::empty();
|
||||
println!("{pos}");
|
||||
pos
|
||||
}
|
||||
};
|
||||
(starting) => {
|
||||
{
|
||||
let pos = Position::starting();
|
||||
println!("{pos}");
|
||||
pos
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -74,7 +74,7 @@ impl MoveGeneratorInternal for KingMoveGenerator {
|
|||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::position;
|
||||
use crate::{position, r#move::AlgebraicMoveFormatter, PositionBuilder};
|
||||
use chessfriend_bitboard::bitboard;
|
||||
use chessfriend_core::{piece, Square};
|
||||
use std::collections::HashSet;
|
||||
|
@ -154,4 +154,40 @@ mod tests {
|
|||
generated_moves
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn black_king_in_check_by_rook() {
|
||||
let pos = PositionBuilder::new()
|
||||
.place_piece(piece!(White King on E1))
|
||||
.place_piece(piece!(White Rook on E4))
|
||||
.place_piece(piece!(Black King on E7))
|
||||
.to_move(Color::Black)
|
||||
.build();
|
||||
|
||||
assert!(pos.is_king_in_check());
|
||||
|
||||
let generator = KingMoveGenerator::new(&pos, Color::Black);
|
||||
let generated_moves: HashSet<Move> = generator.iter().cloned().collect();
|
||||
|
||||
let king = piece!(Black King);
|
||||
let from_square = Square::E7;
|
||||
let expected_moves = HashSet::from_iter([
|
||||
MoveBuilder::new(king, from_square, Square::D6).build(),
|
||||
MoveBuilder::new(king, from_square, Square::D7).build(),
|
||||
MoveBuilder::new(king, from_square, Square::D8).build(),
|
||||
MoveBuilder::new(king, from_square, Square::F6).build(),
|
||||
MoveBuilder::new(king, from_square, Square::F7).build(),
|
||||
MoveBuilder::new(king, from_square, Square::F8).build(),
|
||||
]);
|
||||
|
||||
assert_eq!(
|
||||
generated_moves,
|
||||
expected_moves,
|
||||
"Difference: {:?}",
|
||||
generated_moves
|
||||
.symmetric_difference(&expected_moves)
|
||||
.map(|mv| format!("{}", AlgebraicMoveFormatter::new(mv, &pos)))
|
||||
.collect::<Vec<_>>()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,7 +41,6 @@ impl<'a> fmt::Display for DiagramFormatter<'a> {
|
|||
mod tests {
|
||||
use super::*;
|
||||
use crate::{position, Position};
|
||||
use chessfriend_core::piece;
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
|
|
|
@ -333,8 +333,7 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn piece_in_starting_position() {
|
||||
let pos = Position::starting();
|
||||
println!("{pos}");
|
||||
let pos = test_position!(starting);
|
||||
|
||||
assert_eq!(
|
||||
pos.piece_on_square(Square::H1),
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
// Eryn Wells <eryn@erynwells.me>
|
||||
|
||||
use crate::position::piece_sets::PieceBitBoards;
|
||||
use crate::Position;
|
||||
use chessfriend_bitboard::BitBoard;
|
||||
use chessfriend_core::{Color, Direction, Piece, PlacedPiece, Shape, Square};
|
||||
use chessfriend_core::{Color, Direction, PlacedPiece, Shape, Square};
|
||||
|
||||
pub(crate) trait SightExt {
|
||||
fn sight(&self, pieces: &PieceBitBoards, en_passant_square: Option<Square>) -> BitBoard;
|
||||
|
@ -13,11 +12,13 @@ pub(crate) trait SightExt {
|
|||
pieces: &PieceBitBoards,
|
||||
en_passant_square: Option<Square>,
|
||||
) -> BitBoard;
|
||||
|
||||
fn black_pawn_sight(
|
||||
&self,
|
||||
pieces: &PieceBitBoards,
|
||||
en_passant_square: Option<Square>,
|
||||
) -> BitBoard;
|
||||
|
||||
fn knight_sight(&self, pieces: &PieceBitBoards) -> BitBoard;
|
||||
fn bishop_sight(&self, pieces: &PieceBitBoards) -> BitBoard;
|
||||
fn rook_sight(&self, pieces: &PieceBitBoards) -> BitBoard;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue