Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion fatalii/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "fatalii"
version = "0.10.0"
version = "0.10.1"
edition = "2024"

[dependencies]
Expand Down
11 changes: 7 additions & 4 deletions uci/src/uci_option.rs
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,13 @@ fn set_move_overhead(engine: &mut Engine, move_overhead: i64) -> String {
}

fn set_chess_960(engine: &mut Engine, enable: bool) -> String {
engine.set_variant(Variant::Chess960(File::H, File::A));
match enable {
true => String::from("Chess 960 enabled"),
false => String::from("Chess 960 disabled"),
engine.clear_position_history();
if enable {
engine.set_variant(Variant::Chess960(File::H, File::A));
String::from("Chess 960 enabled")
} else {
engine.set_variant(Variant::Standard);
String::from("Chess 960 disabled")
}
}

Expand Down
26 changes: 17 additions & 9 deletions uci/tests/uci.rs
Original file line number Diff line number Diff line change
Expand Up @@ -217,28 +217,25 @@ fn run_command_position_chess_960() {
p.run_command("setoption name UCI_Chess960 value true\n", &mut engine)
.is_ok()
);

assert_matches!(engine.variant(), Variant::Chess960(_, _));
assert_eq!(None, engine.position());

let invalid_commands = [
let standard_commands = [
&format!("position fen {FEN_STR}\n"),
&format!("position fen {FEN_STR} moves e1g1\n"),
"position startpos moves d2d4 g8f6 c2c4 g7g6 b1c3 d7d5 g1f3 f8g7 d1b3 d5c4 b3c4 e8g8 c1f4 c7c6 e2e4 d8b6\n",
];
for inv_cmd in invalid_commands {
assert!(p.run_command(inv_cmd, &mut engine).is_err());
for cmd in standard_commands {
assert!(p.run_command(cmd, &mut engine).is_err());
}
assert_eq!(None, engine.position());

assert!(p.run_command("position startpos\n", &mut engine).is_ok());
assert_eq!(Some(&Position::initial()), engine.position());

assert!(
p.run_command(
format!("position fen {FEN_STR_CHESS_960}\n").as_str(),
&mut engine
)
.is_ok()
p.run_command(&format!("position fen {FEN_STR_CHESS_960}\n"), &mut engine)
.is_ok()
);
assert_eq!(Fen::str_to_pos(FEN_STR).ok().as_ref(), engine.position());

Expand All @@ -254,6 +251,17 @@ fn run_command_position_chess_960() {
Fen::str_to_pos_chess_960(fen).ok().as_ref(),
engine.position()
);

// Disable chess 960, expect engine to be back in standard mode
assert!(
p.run_command("setoption name UCI_Chess960 value false\n", &mut engine)
.is_ok()
);
assert_matches!(engine.variant(), Variant::Standard);
assert_eq!(None, engine.position());
for cmd in standard_commands {
assert!(p.run_command(cmd, &mut engine).is_ok());
}
}

#[test]
Expand Down
Loading