extern crate alloc;
use crate::kairos::{Clock, Kairos, TickCounter};
#[test]
fn test_skew_tracking() {
let clock = Clock::with_default_config(TickCounter::new(), 1).unwrap();
let initial_stats = clock.stats();
assert_eq!(initial_stats.max_forward_skew_ns, 0);
assert_eq!(initial_stats.max_backward_skew_ns, 0);
let remote_t = Kairos::new(100, 0, 2, 10u16);
let _ = clock.after(remote_t, 20u16);
let stats = clock.stats();
assert_eq!(stats.max_forward_skew_ns, 100);
let remote_t2 = Kairos::new(101, 0, 2, 30u16);
let _ = clock.after(remote_t2, 40u16); let stats = clock.stats();
assert_eq!(
stats.max_forward_skew_ns, 100,
"Skew tracking uses fetch_max"
);
assert_eq!(
stats.max_backward_skew_ns, 99,
"Backward skew detected when clock lags behind last timestamp"
);
}
#[test]
fn test_clock_stats_monitoring() {
let clock = Clock::with_default_config(TickCounter::new(), 1).unwrap();
let stats = clock.stats();
assert!(!stats.has_concerning_skew());
assert_eq!(stats.skew_warning_threshold_ns, 100_000_000);
assert_eq!(stats.max_forward_skew_ns, 0);
assert_eq!(stats.max_backward_skew_ns, 0);
}