Files
Pac-Man/pacman/tests/direction.rs

58 lines
1.7 KiB
Rust

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);
}