pub const HEALTH_GREEN_MIN: f64 = 70.0;
pub const HEALTH_YELLOW_MIN: f64 = 40.0;
pub const RISK_RED_MIN: f64 = 0.55;
pub const RISK_YELLOW_MIN: f64 = 0.28;
#[must_use]
pub fn health_band(score: f64) -> &'static str {
if score >= HEALTH_GREEN_MIN {
"green"
} else if score >= HEALTH_YELLOW_MIN {
"yellow"
} else {
"red"
}
}
#[must_use]
pub fn risk_band(risk: f64) -> &'static str {
if risk >= RISK_RED_MIN {
"red"
} else if risk >= RISK_YELLOW_MIN {
"yellow"
} else {
"green"
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn health_band_green_at_threshold() {
assert_eq!(health_band(HEALTH_GREEN_MIN), "green");
assert_eq!(health_band(100.0), "green");
}
#[test]
fn health_band_yellow_range() {
assert_eq!(health_band(HEALTH_YELLOW_MIN), "yellow");
assert_eq!(health_band(HEALTH_GREEN_MIN - 0.01), "yellow");
}
#[test]
fn health_band_red_below_yellow() {
assert_eq!(health_band(HEALTH_YELLOW_MIN - 0.01), "red");
assert_eq!(health_band(0.0), "red");
}
#[test]
fn risk_band_red_at_threshold() {
assert_eq!(risk_band(RISK_RED_MIN), "red");
assert_eq!(risk_band(1.0), "red");
}
#[test]
fn risk_band_yellow_range() {
assert_eq!(risk_band(RISK_YELLOW_MIN), "yellow");
assert_eq!(risk_band(RISK_RED_MIN - 0.01), "yellow");
}
#[test]
fn risk_band_green_below_yellow() {
assert_eq!(risk_band(RISK_YELLOW_MIN - 0.01), "green");
assert_eq!(risk_band(0.0), "green");
}
}