mirror of
https://github.com/Xevion/Pac-Man.git
synced 2025-12-06 05:15:49 -06:00
74 lines
2.3 KiB
Rust
74 lines
2.3 KiB
Rust
//! Tests for the sprite path generation.
|
|
use pacman::{
|
|
game::ATLAS_FRAMES,
|
|
map::direction::Direction,
|
|
systems::components::Ghost,
|
|
texture::sprites::{FrightenedColor, GameSprite, GhostSprite, MazeSprite, PacmanSprite},
|
|
};
|
|
|
|
#[test]
|
|
fn test_all_sprite_paths_exist() {
|
|
let mut sprites_to_test = Vec::new();
|
|
|
|
// Pac-Man sprites
|
|
for &dir in &[Direction::Up, Direction::Down, Direction::Left, Direction::Right] {
|
|
for frame in 0..2 {
|
|
sprites_to_test.push(GameSprite::Pacman(PacmanSprite::Moving(dir, frame)));
|
|
}
|
|
}
|
|
sprites_to_test.push(GameSprite::Pacman(PacmanSprite::Full));
|
|
for frame in 0..=10 {
|
|
sprites_to_test.push(GameSprite::Pacman(PacmanSprite::Dying(frame)));
|
|
}
|
|
|
|
// Ghost sprites
|
|
for &ghost in &[Ghost::Blinky, Ghost::Pinky, Ghost::Inky, Ghost::Clyde] {
|
|
for &dir in &[Direction::Up, Direction::Down, Direction::Left, Direction::Right] {
|
|
for frame in 0..2 {
|
|
sprites_to_test.push(GameSprite::Ghost(GhostSprite::Normal(ghost, dir, frame)));
|
|
}
|
|
sprites_to_test.push(GameSprite::Ghost(GhostSprite::Eyes(dir)));
|
|
}
|
|
}
|
|
for &color in &[FrightenedColor::Blue, FrightenedColor::White] {
|
|
for frame in 0..2 {
|
|
sprites_to_test.push(GameSprite::Ghost(GhostSprite::Frightened(color, frame)));
|
|
}
|
|
}
|
|
|
|
// Maze sprites
|
|
for i in 0..=34 {
|
|
sprites_to_test.push(GameSprite::Maze(MazeSprite::Tile(i)));
|
|
}
|
|
sprites_to_test.push(GameSprite::Maze(MazeSprite::Pellet));
|
|
sprites_to_test.push(GameSprite::Maze(MazeSprite::Energizer));
|
|
|
|
for sprite in sprites_to_test {
|
|
let path = sprite.to_path();
|
|
assert!(
|
|
ATLAS_FRAMES.contains_key(&path),
|
|
"Sprite path '{}' does not exist in the atlas.",
|
|
path
|
|
);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn test_invalid_sprite_paths_do_not_exist() {
|
|
let invalid_sprites = vec![
|
|
// An invalid Pac-Man dying frame
|
|
GameSprite::Pacman(PacmanSprite::Dying(99)),
|
|
// An invalid maze tile
|
|
GameSprite::Maze(MazeSprite::Tile(99)),
|
|
];
|
|
|
|
for sprite in invalid_sprites {
|
|
let path = sprite.to_path();
|
|
assert!(
|
|
!ATLAS_FRAMES.contains_key(&path),
|
|
"Invalid sprite path '{}' was found in the atlas, but it should not exist.",
|
|
path
|
|
);
|
|
}
|
|
}
|