From ce65c570ab410337e57689e0d0fc36df9fa591fa Mon Sep 17 00:00:00 2001 From: mrw1593 Date: Tue, 20 Jul 2021 16:42:34 -0400 Subject: Fixed unit tests --- model/src/moves.rs | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) (limited to 'model/src/moves.rs') diff --git a/model/src/moves.rs b/model/src/moves.rs index 626d85a..b8e58ee 100644 --- a/model/src/moves.rs +++ b/model/src/moves.rs @@ -1,6 +1,6 @@ use crate::CheckersBitBoard; -#[derive(Copy, Clone, Eq, PartialEq)] +#[derive(Copy, Clone, Debug, Eq, PartialEq)] pub enum MoveDirection { ForwardLeft = 0, ForwardRight = 1, @@ -9,7 +9,7 @@ pub enum MoveDirection { } /// A checkers move -#[derive(Copy, Clone)] +#[derive(Copy, Clone, Debug)] pub struct Move { /// The position of the piece to move start: u32, @@ -30,6 +30,7 @@ impl Move { /// * `direction` - The direction the piece should move in /// * `jump` - Whether or not the piece should jump pub const fn new(start: usize, direction: MoveDirection, jump: bool) -> Self { + // TODO what are the semantics of usize as u32? Self { start: start as u32, direction, @@ -87,3 +88,39 @@ impl Move { } } } + +#[cfg(test)] +mod tests { + + use proptest::prelude::*; + use super::*; + + proptest!{ + #[test] + fn new(start in 0usize..32, jump in proptest::bool::ANY) { + let direction = MoveDirection::ForwardLeft; + let move_test = Move::new(start, direction, jump); + assert_eq!(move_test.start as usize, start); + assert_eq!(move_test.direction, direction); + assert_eq!(move_test.jump, jump); + + let direction = MoveDirection::ForwardRight; + let move_test = Move::new(start, direction, jump); + assert_eq!(move_test.start as usize, start); + assert_eq!(move_test.direction, direction); + assert_eq!(move_test.jump, jump); + + let direction = MoveDirection::BackwardLeft; + let move_test = Move::new(start, direction, jump); + assert_eq!(move_test.start as usize, start); + assert_eq!(move_test.direction, direction); + assert_eq!(move_test.jump, jump); + + let direction = MoveDirection::BackwardRight; + let move_test = Move::new(start, direction, jump); + assert_eq!(move_test.start as usize, start); + assert_eq!(move_test.direction, direction); + assert_eq!(move_test.jump, jump); + } + } +} \ No newline at end of file -- cgit v1.2.3