diff options
| author | mrw1593 <botahamec@outlook.com> | 2021-07-20 16:42:34 -0400 |
|---|---|---|
| committer | mrw1593 <botahamec@outlook.com> | 2021-07-20 16:42:34 -0400 |
| commit | ce65c570ab410337e57689e0d0fc36df9fa591fa (patch) | |
| tree | 16b7353b25fd834e4dda175091cc952183132d96 /model/src/moves.rs | |
| parent | 30a2a8c1067c00a1775c9674427538e0f472dcfa (diff) | |
Fixed unit tests
Diffstat (limited to 'model/src/moves.rs')
| -rw-r--r-- | model/src/moves.rs | 41 |
1 files changed, 39 insertions, 2 deletions
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 |
