mirror of
https://github.com/Xevion/Pac-Man.git
synced 2025-12-09 14:07:57 -06:00
refactor: add ticks to DeltaTime, rewrite Blinking system for tick-based calculations with absolute calculations, rewrite Blinking/Direction tests
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
use glam::I8Vec2;
|
||||
use pacman::map::direction::*;
|
||||
use speculoos::prelude::*;
|
||||
|
||||
#[test]
|
||||
fn test_direction_opposite() {
|
||||
@@ -11,21 +11,47 @@ fn test_direction_opposite() {
|
||||
];
|
||||
|
||||
for (dir, expected) in test_cases {
|
||||
assert_eq!(dir.opposite(), expected);
|
||||
assert_that(&dir.opposite()).is_equal_to(expected);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_direction_as_ivec2() {
|
||||
let test_cases = [
|
||||
(Direction::Up, -I8Vec2::Y),
|
||||
(Direction::Down, I8Vec2::Y),
|
||||
(Direction::Left, -I8Vec2::X),
|
||||
(Direction::Right, I8Vec2::X),
|
||||
];
|
||||
|
||||
for (dir, expected) in test_cases {
|
||||
assert_eq!(dir.as_ivec2(), expected);
|
||||
assert_eq!(I8Vec2::from(dir), expected);
|
||||
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