Move FEN-related tests to its module
This commit is contained in:
parent
dbde58987c
commit
92a69ee741
|
@ -673,78 +673,6 @@ mod test {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn fen_default_position() {
|
|
||||||
let default_position = ChessBoard::default();
|
|
||||||
assert_eq!(
|
|
||||||
ChessBoard::from_fen("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1")
|
|
||||||
.unwrap(),
|
|
||||||
default_position
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn fen_en_passant() {
|
|
||||||
// Start from default position
|
|
||||||
let mut position = ChessBoard::default();
|
|
||||||
position.do_move(
|
|
||||||
MoveBuilder {
|
|
||||||
piece: Piece::Pawn,
|
|
||||||
start: Square::E2,
|
|
||||||
destination: Square::E4,
|
|
||||||
capture: None,
|
|
||||||
promotion: None,
|
|
||||||
en_passant: false,
|
|
||||||
double_step: true,
|
|
||||||
castling: false,
|
|
||||||
}
|
|
||||||
.into(),
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
ChessBoard::from_fen("rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1")
|
|
||||||
.unwrap(),
|
|
||||||
position
|
|
||||||
);
|
|
||||||
// And now c5
|
|
||||||
position.do_move(
|
|
||||||
MoveBuilder {
|
|
||||||
piece: Piece::Pawn,
|
|
||||||
start: Square::C7,
|
|
||||||
destination: Square::C5,
|
|
||||||
capture: None,
|
|
||||||
promotion: None,
|
|
||||||
en_passant: false,
|
|
||||||
double_step: true,
|
|
||||||
castling: false,
|
|
||||||
}
|
|
||||||
.into(),
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
ChessBoard::from_fen("rnbqkbnr/pp1ppppp/8/2p5/4P3/8/PPPP1PPP/RNBQKBNR w KQkq c6 0 2")
|
|
||||||
.unwrap(),
|
|
||||||
position
|
|
||||||
);
|
|
||||||
// Finally, Nf3
|
|
||||||
position.do_move(
|
|
||||||
MoveBuilder {
|
|
||||||
piece: Piece::Knight,
|
|
||||||
start: Square::G1,
|
|
||||||
destination: Square::F3,
|
|
||||||
capture: None,
|
|
||||||
promotion: None,
|
|
||||||
en_passant: false,
|
|
||||||
double_step: false,
|
|
||||||
castling: false,
|
|
||||||
}
|
|
||||||
.into(),
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
ChessBoard::from_fen("rnbqkbnr/pp1ppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2 ")
|
|
||||||
.unwrap(),
|
|
||||||
position
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn do_move() {
|
fn do_move() {
|
||||||
// Start from default position
|
// Start from default position
|
||||||
|
|
79
src/fen.rs
79
src/fen.rs
|
@ -202,3 +202,82 @@ impl FromFen for ChessBoard {
|
||||||
Ok(builder.try_into()?)
|
Ok(builder.try_into()?)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test {
|
||||||
|
use crate::board::MoveBuilder;
|
||||||
|
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn default_position() {
|
||||||
|
let default_position = ChessBoard::default();
|
||||||
|
assert_eq!(
|
||||||
|
ChessBoard::from_fen("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1")
|
||||||
|
.unwrap(),
|
||||||
|
default_position
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn en_passant() {
|
||||||
|
// Start from default position
|
||||||
|
let mut position = ChessBoard::default();
|
||||||
|
position.do_move(
|
||||||
|
MoveBuilder {
|
||||||
|
piece: Piece::Pawn,
|
||||||
|
start: Square::E2,
|
||||||
|
destination: Square::E4,
|
||||||
|
capture: None,
|
||||||
|
promotion: None,
|
||||||
|
en_passant: false,
|
||||||
|
double_step: true,
|
||||||
|
castling: false,
|
||||||
|
}
|
||||||
|
.into(),
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
ChessBoard::from_fen("rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1")
|
||||||
|
.unwrap(),
|
||||||
|
position
|
||||||
|
);
|
||||||
|
// And now c5
|
||||||
|
position.do_move(
|
||||||
|
MoveBuilder {
|
||||||
|
piece: Piece::Pawn,
|
||||||
|
start: Square::C7,
|
||||||
|
destination: Square::C5,
|
||||||
|
capture: None,
|
||||||
|
promotion: None,
|
||||||
|
en_passant: false,
|
||||||
|
double_step: true,
|
||||||
|
castling: false,
|
||||||
|
}
|
||||||
|
.into(),
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
ChessBoard::from_fen("rnbqkbnr/pp1ppppp/8/2p5/4P3/8/PPPP1PPP/RNBQKBNR w KQkq c6 0 2")
|
||||||
|
.unwrap(),
|
||||||
|
position
|
||||||
|
);
|
||||||
|
// Finally, Nf3
|
||||||
|
position.do_move(
|
||||||
|
MoveBuilder {
|
||||||
|
piece: Piece::Knight,
|
||||||
|
start: Square::G1,
|
||||||
|
destination: Square::F3,
|
||||||
|
capture: None,
|
||||||
|
promotion: None,
|
||||||
|
en_passant: false,
|
||||||
|
double_step: false,
|
||||||
|
castling: false,
|
||||||
|
}
|
||||||
|
.into(),
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
ChessBoard::from_fen("rnbqkbnr/pp1ppppp/8/2p5/4P3/5N2/PPPP1PPP/RNBQKB1R b KQkq - 1 2 ")
|
||||||
|
.unwrap(),
|
||||||
|
position
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue