From 36db46ac18cfe864c25299c99641b01f692e5253 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Sun, 25 Feb 2024 09:20:45 -0800 Subject: [PATCH] =?UTF-8?q?Move=20position::tests=20=E2=86=92=20testing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Expand information printed in assert_move_list --- position/src/lib.rs | 2 +- position/src/testing.rs | 58 +++++++++++++++++++++++++++++++++++++++++ position/src/tests.rs | 34 ------------------------ 3 files changed, 59 insertions(+), 35 deletions(-) create mode 100644 position/src/testing.rs delete mode 100644 position/src/tests.rs 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::>() - }; -}