test: use anti-test cases for more tests
This commit is contained in:
parent
16141e851c
commit
8b066b3933
@ -483,7 +483,9 @@ impl BoardState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn move_piece(&mut self, src: Square, dest: Square) {
|
fn move_piece(&mut self, src: Square, dest: Square) {
|
||||||
let pc = self.del_piece(src).unwrap_or_else(|_| panic!("move ({src} -> {dest}) should have piece at source"));
|
let pc = self
|
||||||
|
.del_piece(src)
|
||||||
|
.unwrap_or_else(|_| panic!("move ({src} -> {dest}) should have piece at source"));
|
||||||
self.set_piece(dest, pc);
|
self.set_piece(dest, pc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -945,27 +945,17 @@ mod tests {
|
|||||||
),
|
),
|
||||||
];
|
];
|
||||||
|
|
||||||
for tc in test_cases {
|
let test_cases = test_cases.map(decondense_moves);
|
||||||
let decondensed = decondense_moves(tc);
|
|
||||||
let (board, expected_moves) = decondensed;
|
|
||||||
|
|
||||||
let (anti_board, anti_expected_moves) = flip_test_case(board, &expected_moves);
|
let augmented_test_cases = test_cases.clone().map(|tc| flip_test_case(tc.0, &tc.1));
|
||||||
|
let all_cases = [augmented_test_cases, test_cases].concat();
|
||||||
|
|
||||||
|
for (board, expected_moves) in all_cases {
|
||||||
let mut moves: Vec<Move> = board.gen_pseudo_moves().into_iter().collect();
|
let mut moves: Vec<Move> = board.gen_pseudo_moves().into_iter().collect();
|
||||||
let mut anti_moves: Vec<Move> = anti_board.gen_pseudo_moves().into_iter().collect();
|
|
||||||
moves.sort_unstable();
|
moves.sort_unstable();
|
||||||
anti_moves.sort_unstable();
|
|
||||||
let moves = moves;
|
let moves = moves;
|
||||||
let anti_moves = anti_moves;
|
|
||||||
|
|
||||||
assert_eq!(moves, expected_moves, "failed tc {}", board.to_fen());
|
assert_eq!(moves, expected_moves, "failed tc {}", board.to_fen());
|
||||||
assert_eq!(
|
|
||||||
anti_moves,
|
|
||||||
anti_expected_moves,
|
|
||||||
"failed anti-tc '{}' (originally '{}')",
|
|
||||||
anti_board.to_fen(),
|
|
||||||
board.to_fen()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1061,16 +1051,12 @@ mod tests {
|
|||||||
// castling while checked
|
// castling while checked
|
||||||
(
|
(
|
||||||
"8/8/8/8/8/8/rrrrr2r/4K2R w KQ - 0 1",
|
"8/8/8/8/8/8/rrrrr2r/4K2R w KQ - 0 1",
|
||||||
vec![
|
vec![("e1", vec!["f1"], MoveType::Normal)],
|
||||||
("e1", vec!["f1"], MoveType::Normal),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
// castling while checked
|
// castling while checked
|
||||||
(
|
(
|
||||||
"8/8/8/8/8/8/r3rrrr/R3K3 w KQ - 0 1",
|
"8/8/8/8/8/8/r3rrrr/R3K3 w KQ - 0 1",
|
||||||
vec![
|
vec![("e1", vec!["d1"], MoveType::Normal)],
|
||||||
("e1", vec!["d1"], MoveType::Normal),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
// castling through check
|
// castling through check
|
||||||
(
|
(
|
||||||
@ -1100,11 +1086,15 @@ mod tests {
|
|||||||
),
|
),
|
||||||
];
|
];
|
||||||
|
|
||||||
for tc in test_cases {
|
let test_cases = test_cases.map(|tc| decondense_moves(tc));
|
||||||
eprintln!("on test {}", tc.0);
|
let augmented_test_cases = test_cases.clone().map(|tc| flip_test_case(tc.0, &tc.1));
|
||||||
|
|
||||||
let (board, mut expected_moves) = decondense_moves(tc);
|
let all_cases = [augmented_test_cases, test_cases].concat();
|
||||||
|
|
||||||
|
for (board, mut expected_moves) in all_cases {
|
||||||
|
eprintln!("on test '{}'", board.to_fen());
|
||||||
expected_moves.sort_unstable();
|
expected_moves.sort_unstable();
|
||||||
|
let expected_moves = expected_moves;
|
||||||
|
|
||||||
let node = Node {
|
let node = Node {
|
||||||
pos: board,
|
pos: board,
|
||||||
@ -1115,8 +1105,6 @@ mod tests {
|
|||||||
moves.sort_unstable();
|
moves.sort_unstable();
|
||||||
let moves = moves;
|
let moves = moves;
|
||||||
|
|
||||||
let expected_moves = expected_moves;
|
|
||||||
|
|
||||||
assert_eq!(moves, expected_moves);
|
assert_eq!(moves, expected_moves);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user