mirror of
https://github.com/Xevion/Pac-Man.git
synced 2025-12-10 10:08:02 -06:00
fix: correct broken timing format tests
This commit is contained in:
@@ -5,21 +5,41 @@ use std::time::Duration;
|
|||||||
fn test_timing_statistics() {
|
fn test_timing_statistics() {
|
||||||
let timings = SystemTimings::default();
|
let timings = SystemTimings::default();
|
||||||
|
|
||||||
// Add some test data
|
// 10ms average, 2ms std dev
|
||||||
timings.add_timing(SystemId::PlayerControls, Duration::from_millis(10));
|
timings.add_timing(SystemId::PlayerControls, Duration::from_millis(10));
|
||||||
timings.add_timing(SystemId::PlayerControls, Duration::from_millis(12));
|
timings.add_timing(SystemId::PlayerControls, Duration::from_millis(12));
|
||||||
timings.add_timing(SystemId::PlayerControls, Duration::from_millis(8));
|
timings.add_timing(SystemId::PlayerControls, Duration::from_millis(8));
|
||||||
|
|
||||||
|
// 2ms average, 1ms std dev
|
||||||
|
timings.add_timing(SystemId::Blinking, Duration::from_millis(3));
|
||||||
|
timings.add_timing(SystemId::Blinking, Duration::from_millis(2));
|
||||||
|
timings.add_timing(SystemId::Blinking, Duration::from_millis(1));
|
||||||
|
fn close_enough(a: Duration, b: Duration) -> bool {
|
||||||
|
if a > b {
|
||||||
|
a - b < Duration::from_micros(500) // 0.1ms
|
||||||
|
} else {
|
||||||
|
b - a < Duration::from_micros(500)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let stats = timings.get_stats();
|
let stats = timings.get_stats();
|
||||||
let (avg, std_dev) = stats.get(&SystemId::PlayerControls).unwrap();
|
let (avg, std_dev) = stats.get(&SystemId::PlayerControls).unwrap();
|
||||||
|
|
||||||
// Average should be 10ms, standard deviation should be small
|
// Average should be 10ms, standard deviation should be small
|
||||||
assert!((avg.as_millis() as f64 - 10.0).abs() < 1.0);
|
assert!(close_enough(*avg, Duration::from_millis(10)), "avg: {:?}", avg);
|
||||||
assert!(std_dev.as_millis() > 0);
|
assert!(close_enough(*std_dev, Duration::from_millis(2)), "std_dev: {:?}", std_dev);
|
||||||
|
|
||||||
let (total_avg, total_std) = timings.get_total_stats();
|
let (total_avg, total_std) = timings.get_total_stats();
|
||||||
assert!((total_avg.as_millis() as f64 - 10.0).abs() < 1.0);
|
assert!(
|
||||||
assert!(total_std.as_millis() > 0);
|
close_enough(total_avg, Duration::from_millis(18)),
|
||||||
|
"total_avg: {:?}",
|
||||||
|
total_avg
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
close_enough(total_std, Duration::from_millis(12)),
|
||||||
|
"total_std: {:?}",
|
||||||
|
total_std
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// #[test]
|
// #[test]
|
||||||
|
|||||||
Reference in New Issue
Block a user