Get en passant move building working (again?)
This commit is contained in:
parent
5d1ad73be6
commit
047eb4fd77
3 changed files with 28 additions and 16 deletions
|
@ -270,14 +270,19 @@ impl Builder<Push> {
|
|||
}
|
||||
|
||||
pub fn capturing_en_passant_on(self, square: Square) -> Builder<EnPassantCapture> {
|
||||
let mut style = self.style;
|
||||
style.to = Some(square);
|
||||
match EnPassant::from_target_square(square) {
|
||||
Some(en_passant) => {
|
||||
let mut style = self.style;
|
||||
style.to = Some(en_passant.target_square());
|
||||
|
||||
Builder {
|
||||
style: EnPassantCapture {
|
||||
push: self.style,
|
||||
capture: Some(square),
|
||||
},
|
||||
Builder {
|
||||
style: EnPassantCapture {
|
||||
push: style,
|
||||
capture: Some(en_passant.capture_square()),
|
||||
},
|
||||
}
|
||||
}
|
||||
None => todo!(),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,9 @@ macro_rules! assert_flags {
|
|||
|
||||
#[test]
|
||||
fn move_flags_quiet() -> Result<(), BuilderError> {
|
||||
let mv = Builder::push(&piece!(White Pawn on A4), Square::A5).build()?;
|
||||
let mv = Builder::push(&piece!(White Pawn on A4))
|
||||
.to(Square::A5)
|
||||
.build()?;
|
||||
assert_flags!(mv, true, false, false, false, false, false);
|
||||
|
||||
Ok(())
|
||||
|
@ -57,21 +59,23 @@ fn move_flags_capture() -> Result<(), BuilderError> {
|
|||
fn move_flags_en_passant_capture() -> Result<(), BuilderError> {
|
||||
let mv = unsafe {
|
||||
Builder::new()
|
||||
.from(Square::A5)
|
||||
.capturing_en_passant_on(Square::B4)
|
||||
.build_unchecked()?
|
||||
.from(Square::A4)
|
||||
.capturing_en_passant_on(Square::B3)
|
||||
.build_unchecked()
|
||||
};
|
||||
|
||||
assert_flags!(mv, false, false, true, true, false, false);
|
||||
assert_eq!(mv.origin_square(), Square::A5);
|
||||
assert_eq!(mv.target_square(), Square::B4);
|
||||
assert_eq!(mv.origin_square(), Square::A4);
|
||||
assert_eq!(mv.target_square(), Square::B3);
|
||||
assert_eq!(mv.capture_square(), Some(Square::B4));
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn move_flags_promotion() -> Result<(), BuilderError> {
|
||||
let mv = Builder::push(&piece!(White Pawn on H7), Square::H8)
|
||||
let mv = Builder::push(&piece!(White Pawn on H7))
|
||||
.to(Square::H8)
|
||||
.promoting_to(PromotionShape::Queen)
|
||||
.build()?;
|
||||
|
||||
|
@ -83,7 +87,8 @@ fn move_flags_promotion() -> Result<(), BuilderError> {
|
|||
|
||||
#[test]
|
||||
fn move_flags_capture_promotion() -> Result<(), BuilderError> {
|
||||
let mv = Builder::push(&piece!(White Pawn on H7), Square::H8)
|
||||
let mv = Builder::push(&piece!(White Pawn on H7))
|
||||
.to(Square::H8)
|
||||
.capturing_piece(&piece!(Black Knight on G8))
|
||||
.promoting_to(PromotionShape::Queen)
|
||||
.build()?;
|
||||
|
|
|
@ -5,7 +5,9 @@ use chessfriend_moves::{Builder, BuilderError};
|
|||
|
||||
#[test]
|
||||
fn pawn_push() -> Result<(), BuilderError> {
|
||||
let mv = Builder::push(&piece!(White Pawn on A3), Square::A4).build()?;
|
||||
let mv = Builder::push(&piece!(White Pawn on A3))
|
||||
.to(Square::A4)
|
||||
.build()?;
|
||||
|
||||
assert!(mv.is_quiet());
|
||||
assert_eq!(mv.origin_square(), Square::A3);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue