diff --git a/position/src/lib.rs b/position/src/lib.rs index 5776e05..d313231 100644 --- a/position/src/lib.rs +++ b/position/src/lib.rs @@ -13,7 +13,7 @@ mod sight; mod macros; #[macro_use] -mod tests; +mod testing; pub use position::{MoveBuilder as MakeMoveBuilder, Position, PositionBuilder}; pub use r#move::{Castle, MakeMoveError, Move, MoveBuilder}; diff --git a/position/src/testing.rs b/position/src/testing.rs new file mode 100644 index 0000000..ba4bd69 --- /dev/null +++ b/position/src/testing.rs @@ -0,0 +1,58 @@ +// Eryn Wells + +use crate::MakeMoveError; +use chessfriend_moves::{BuildMoveError, BuildMoveResult, Move}; + +#[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) + } +} diff --git a/position/src/tests.rs b/position/src/tests.rs deleted file mode 100644 index 962b9bc..0000000 --- a/position/src/tests.rs +++ /dev/null @@ -1,34 +0,0 @@ -// Eryn Wells - -#[macro_export] -macro_rules! assert_move_list { - ($generated:expr, $expected:expr, $position:expr) => { - assert_eq!( - $generated, - $expected, - "Difference: {:?}", - $generated - .symmetric_difference(&$expected) - .map(|mv| format!( - "{}", - $crate::r#move::AlgebraicMoveFormatter::new(mv, &$position) - )) - .collect::>() - ) - }; -} - -#[macro_export] -macro_rules! formatted_move_list { - ($move_list:expr, $position:expr) => { - $move_list - .iter() - .map(|mv| { - format!( - "{}", - $crate::r#move::AlgebraicMoveFormatter::new(mv, &$position) - ) - }) - .collect::>() - }; -}