Skip to content

Commit e377f1a

Browse files
Merge pull request #99 from DeveloperPaul123/feature/mate-in-x-tests
bench: 2517656
2 parents 20870c6 + d088418 commit e377f1a

File tree

2 files changed

+71
-4
lines changed

2 files changed

+71
-4
lines changed

Justfile

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,15 @@ env_var_postfix := if os_family() == "windows" { ";" } else { "" }
1111
default:
1212
@just -l
1313

14-
build-engine:
15-
cargo rustc --release --bin byte-knight -- -C target-cpu=native
14+
[group('dev')]
15+
[doc('Build binary target in debug for native CPU')]
16+
build-native target:
17+
cargo rustc --bin {{target}} -- -C target-cpu=native
18+
19+
[group('dev')]
20+
[doc('Build binary target in debug for native CPU')]
21+
build-native-release target:
22+
cargo rustc --release --bin {{target}} -- -C target-cpu=native
1623

1724
[group('dev')]
1825
[doc('Build the project (default is debug)')]
@@ -68,7 +75,7 @@ lint:
6875
[group('chess')]
6976
[group('performance')]
7077
[doc('Run sarch benchmark - required before committing for OpenBench.')]
71-
search-bench: build-engine
78+
search-bench: (build-native-release "byte-knight")
7279
echo "Running search benchmark..."
7380
./target/release/byte-knight bench
7481

@@ -126,3 +133,9 @@ compare-to-main engine1: (build "release")
126133
[doc('Format all Rust code')]
127134
format:
128135
cargo fmt --all
136+
137+
[group('dev')]
138+
[doc('Run the HCE tuner on the given input book')]
139+
hce-tune book:
140+
echo "Running HCE tuner..."
141+
cargo run --release --bin hce-tune -- -i {{ book }} -o {{ book }}.tuned -t 4

engine/src/search.rs

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* Created Date: Thursday, November 21st 2024
55
* Author: Paul Tsouchlos (DeveloperPaul123) ([email protected])
66
* -----
7-
* Last Modified: Thu Apr 24 2025
7+
* Last Modified: Tue Apr 29 2025
88
* -----
99
* Copyright (c) 2024 Paul Tsouchlos (DeveloperPaul123)
1010
* GNU General Public License v3.0 or later
@@ -705,6 +705,21 @@ mod tests {
705705

706706
use super::LargeScoreType;
707707

708+
fn run_search_tests(test_pairs: &[(&str, &str)], config: SearchParameters) {
709+
let mut ttable = TranspositionTable::default();
710+
let mut history_table = Default::default();
711+
let mut search = Search::new(&config, &mut ttable, &mut history_table);
712+
713+
for (fen, expected_move) in test_pairs {
714+
let mut board = Board::from_fen(fen).unwrap();
715+
let result = search.search(&mut board, None);
716+
assert_eq!(
717+
result.best_move.unwrap().to_long_algebraic(),
718+
*expected_move
719+
);
720+
}
721+
}
722+
708723
#[test]
709724
fn white_mate_in_1() {
710725
let fen = "k7/8/KQ6/8/8/8/8/8 w - - 0 1";
@@ -742,6 +757,45 @@ mod tests {
742757
assert_eq!(res.best_move.unwrap().to_long_algebraic(), "b8a8")
743758
}
744759

760+
#[test]
761+
fn mate_in_one() {
762+
// taken from Toad: https://github.com/dannyhammer/toad/blob/a84ea4c01c8bb036a132ff0e0f3d283029854289/src/search.rs#L1820
763+
let tests = [
764+
("6k1/R7/6K1/8/8/8/8/8 w - - 0 1", "a7a8"),
765+
("8/8/8/8/8/6k1/r7/6K1 b - - 0 1", "a2a1"),
766+
("6k1/4R3/6K1/q7/8/8/8/8 w - - 0 1", "e7e8"),
767+
("8/8/8/8/Q7/6k1/4r3/6K1 b - - 0 1", "e2e1"),
768+
("6k1/8/6K1/q3R3/8/8/8/8 w - - 0 1", "e5e8"),
769+
("8/8/8/8/Q3r3/6k1/8/6K1 b - - 0 1", "e4e1"),
770+
("k7/6R1/5R1P/8/8/8/8/K7 w - - 0 1", "f6f8"),
771+
("k7/8/8/8/8/5r1p/6r1/K7 b - - 0 1", "f3f1"),
772+
];
773+
774+
let params = SearchParameters {
775+
max_depth: 3,
776+
..Default::default()
777+
};
778+
run_search_tests(&tests, params);
779+
}
780+
781+
#[test]
782+
fn obvious_captures() {
783+
let tests = [
784+
("5k2/8/8/b7/2N5/r7/8/5K2 w - - 0 1", "c4a3"),
785+
("5k2/8/8/B7/2n5/R7/8/5K2 b - - 0 1", "c4a3"),
786+
("5k2/8/8/b7/2N5/r7/8/5K2 w - - 0 1", "c4a3"),
787+
("5k2/8/8/B7/2n5/R7/8/5K2 b - - 0 1", "c4a3"),
788+
("4k3/8/8/1n1p4/2P5/8/8/4K3 w - - 0 1", "c4b5"),
789+
("4k3/8/8/2p5/1N1P4/8/8/4K3 b - - 0 1", "c5b4"),
790+
];
791+
792+
let params = SearchParameters {
793+
max_depth: 3,
794+
..Default::default()
795+
};
796+
run_search_tests(&tests, params);
797+
}
798+
745799
#[test]
746800
fn stalemate() {
747801
let fen = "k7/8/KQ6/8/8/8/8/8 b - - 0 1";

0 commit comments

Comments
 (0)