mirror of
https://github.com/Xevion/Pac-Man.git
synced 2025-12-15 18:12:31 -06:00
refactor: create workspace, move 'pacman' into pacman/ subfolder as workspace member
This commit is contained in:
57
pacman/tests/direction.rs
Normal file
57
pacman/tests/direction.rs
Normal file
@@ -0,0 +1,57 @@
|
||||
use pacman::map::direction::*;
|
||||
use speculoos::prelude::*;
|
||||
|
||||
#[test]
|
||||
fn test_direction_opposite() {
|
||||
let test_cases = [
|
||||
(Direction::Up, Direction::Down),
|
||||
(Direction::Down, Direction::Up),
|
||||
(Direction::Left, Direction::Right),
|
||||
(Direction::Right, Direction::Left),
|
||||
];
|
||||
|
||||
for (dir, expected) in test_cases {
|
||||
assert_that(&dir.opposite()).is_equal_to(expected);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_direction_opposite_symmetry() {
|
||||
// Test that opposite() is symmetric: opposite(opposite(d)) == d
|
||||
for &dir in &Direction::DIRECTIONS {
|
||||
assert_that(&dir.opposite().opposite()).is_equal_to(dir);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_direction_opposite_exhaustive() {
|
||||
// Test that every direction has a unique opposite
|
||||
let mut opposites = std::collections::HashSet::new();
|
||||
for &dir in &Direction::DIRECTIONS {
|
||||
let opposite = dir.opposite();
|
||||
assert_that(&opposites.insert(opposite)).is_true();
|
||||
}
|
||||
assert_that(&opposites).has_length(4);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_direction_as_usize_exhaustive() {
|
||||
// Test that as_usize() returns unique values for all directions
|
||||
let mut usizes = std::collections::HashSet::new();
|
||||
for &dir in &Direction::DIRECTIONS {
|
||||
let usize_val = dir.as_usize();
|
||||
assert_that(&usizes.insert(usize_val)).is_true();
|
||||
}
|
||||
assert_that(&usizes).has_length(4);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_direction_as_ivec2_exhaustive() {
|
||||
// Test that as_ivec2() returns unique values for all directions
|
||||
let mut ivec2s = std::collections::HashSet::new();
|
||||
for &dir in &Direction::DIRECTIONS {
|
||||
let ivec2_val = dir.as_ivec2();
|
||||
assert_that(&ivec2s.insert(ivec2_val)).is_true();
|
||||
}
|
||||
assert_that(&ivec2s).has_length(4);
|
||||
}
|
||||
Reference in New Issue
Block a user