use crate::common::{fresh_screen, pump};
use oxivgl::timer::Timer;
#[test]
fn timer_create_and_triggered() {
let _screen = fresh_screen();
let timer = Timer::new(100_000).unwrap();
assert!(!timer.triggered());
timer.ready();
pump();
assert!(timer.triggered());
assert!(!timer.triggered());
}
#[test]
fn timer_set_period_and_repeat_count() {
let _screen = fresh_screen();
let timer = Timer::new(100_000).unwrap();
timer.set_period(100_000).set_repeat_count(1);
timer.ready();
pump();
assert!(timer.triggered());
}
#[test]
fn timer_ready_fires_immediately() {
let _screen = fresh_screen();
let timer = Timer::new(999_999).unwrap(); timer.ready(); pump();
assert!(timer.triggered());
}
#[test]
fn timer_pause_resume() {
let _screen = fresh_screen();
let timer = Timer::new(100_000).unwrap();
timer.pause();
timer.ready(); pump();
assert!(!timer.triggered(), "paused timer should not fire");
timer.resume();
timer.ready();
pump();
assert!(timer.triggered(), "resumed timer should fire");
}
#[test]
fn timer_drop_cleans_up() {
let _screen = fresh_screen();
let timer = Timer::new(10).unwrap();
drop(timer); pump();
}