mirror of
https://github.com/Xevion/Pac-Man.git
synced 2025-12-14 22:12:23 -06:00
53 lines
1.3 KiB
Rust
53 lines
1.3 KiB
Rust
use glam::U16Vec2;
|
|
use pacman::texture::blinking::BlinkingTexture;
|
|
use pacman::texture::sprite::AtlasTile;
|
|
use sdl2::pixels::Color;
|
|
|
|
fn mock_atlas_tile(id: u32) -> AtlasTile {
|
|
AtlasTile {
|
|
pos: U16Vec2::new(0, 0),
|
|
size: U16Vec2::new(16, 16),
|
|
color: Some(Color::RGB(id as u8, 0, 0)),
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn test_tick_multiple_blink_changes() {
|
|
let tile = mock_atlas_tile(1);
|
|
let mut texture = BlinkingTexture::new(tile, 0.5);
|
|
|
|
// First blink
|
|
texture.tick(0.5);
|
|
assert_eq!(texture.is_on(), false);
|
|
|
|
// Second blink (back to on)
|
|
texture.tick(0.5);
|
|
assert_eq!(texture.is_on(), true);
|
|
|
|
// Third blink (back to off)
|
|
texture.tick(0.5);
|
|
assert_eq!(texture.is_on(), false);
|
|
}
|
|
|
|
#[test]
|
|
fn test_tick_partial_blink_duration() {
|
|
let tile = mock_atlas_tile(1);
|
|
let mut texture = BlinkingTexture::new(tile, 0.5);
|
|
|
|
// Tick with 1.25 blink durations
|
|
texture.tick(0.625);
|
|
assert_eq!(texture.is_on(), false);
|
|
assert_eq!(texture.time_bank(), 0.125);
|
|
}
|
|
|
|
#[test]
|
|
fn test_tick_with_negative_delta_time() {
|
|
let tile = mock_atlas_tile(1);
|
|
let mut texture = BlinkingTexture::new(tile, 0.5);
|
|
|
|
// Should not cause issues
|
|
texture.tick(-0.1);
|
|
assert_eq!(texture.is_on(), true);
|
|
assert_eq!(texture.time_bank(), -0.1);
|
|
}
|