sisyphus32 1.3.4

Feature-based UCI Chess Engine
Documentation
use sisyphus32::*;

#[test]
fn test_fen_parsing_and_move_generation() {
    let position = FenString::kiwipete().parse().unwrap();
    let move_list = MoveGeneration::generate_captures::<BitMove, PseudoLegal>(&position);
    assert_eq!(move_list.len(), 8);

    for bit_move in move_list {
        assert_ne!(position.get_piece_option(bit_move.target()), None);
    }
}

#[test]
fn test_zobrist_key_incremental_updates_are_correct() {
    let position = Position::starting_position();

    for legal_move in MoveGeneration::generate_moves::<BitMove, Legal>(&position) {
        let mut position_copy = position.clone();
        position_copy.make_move(legal_move);
        assert_eq!(position_copy.zobrist_key, ZobristKey::generate(&position_copy), "{}", position_copy);
    }
}