// Eryn Wells use crate::MakeMoveError; use chessfriend_moves::BuildMoveError; #[macro_export] macro_rules! assert_move_list { ($generated:expr, $expected:expr, $position:expr) => { assert_eq!( $generated, $expected, "\n\tMatching: {:?}\n\tGenerated, not expected: {:?}\n\tExpected, not generated: {:?}", $generated .intersection(&$expected) .map(|mv| format!("{}", mv)) .collect::>(), $generated .difference(&$expected) .map(|mv| format!("{}", mv)) .collect::>(), $expected .difference(&$generated) .map(|mv| format!("{}", mv)) .collect::>(), ) }; } #[macro_export] macro_rules! formatted_move_list { ($move_list:expr, $position:expr) => { $move_list .iter() .map(|mv| format!("{}", mv)) .collect::>() }; } pub type TestResult = Result<(), TestError>; #[derive(Debug, Eq, PartialEq)] pub enum TestError { BuildMove(BuildMoveError), MakeMove(MakeMoveError), NoLegalMoves, } impl From for TestError { fn from(value: BuildMoveError) -> Self { TestError::BuildMove(value) } } impl From for TestError { fn from(value: MakeMoveError) -> Self { TestError::MakeMove(value) } }