in clock-bound-d/src/tracking.rs [106:122]
fn test_dispersion_at() {
let tracking = mock_tracking();
let max_clock_error: f64 = 1.0;
let dur_secs: f64 = 5.0;
// Validate the new root dispersion is correct for a 5 second duration
let time = tracking.ref_time + Duration::from_secs(dur_secs as u64);
let new_root_dispersion = dispersion_at(tracking, &time, max_clock_error);
// Calculate error rate using tracking information
let error_rate =
(max_clock_error + f64::from(tracking.skew_ppm) + f64::from(tracking.resid_freq_ppm))
* 1e-6;
// Formula is root_dispersion + duration * error_rate
let expected_root_dispersion = f64::from(tracking.root_dispersion) + dur_secs * error_rate;
assert_eq!(new_root_dispersion, expected_root_dispersion);
}