pub const SECS_PER_MILE: f64 = 5.0;
pub const SECS_PER_KM: f64 = 3.0;
pub const DANGER_THRESHOLD_SECS: f64 = 30.0;
pub fn miles(seconds: f64) -> f64 { seconds / SECS_PER_MILE }
pub fn kilometers(seconds: f64) -> f64 { seconds / SECS_PER_KM }
pub fn is_dangerous(seconds: f64) -> bool { seconds <= DANGER_THRESHOLD_SECS }
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn ten_seconds_is_two_miles() { assert!((miles(10.0) - 2.0).abs() < 1e-9); }
#[test]
fn km_matches_mile_conversion() {
let m = miles(15.0); let km = kilometers(15.0);
assert!((km / m - 1.667).abs() < 0.01);
}
#[test]
fn danger_rule() {
assert!(is_dangerous(30.0));
assert!(is_dangerous(5.0));
assert!(!is_dangerous(45.0));
}
}