const LIFESTATES: &[(i64, &str)] = &[
(0, "alive"),
(1, "dying"),
(2, "dead"),
(3, "respawnable"),
(4, "respawning"),
];
pub fn lifestate_name(id: i64) -> &'static str {
LIFESTATES
.iter()
.find(|&&(k, _)| k == id)
.map(|&(_, v)| v)
.unwrap_or("LIFESTATE_NOT_FOUND")
}
pub fn all_lifestates() -> &'static [(i64, &'static str)] {
LIFESTATES
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn known_lifestate_alive() {
assert_eq!(lifestate_name(0), "alive");
}
#[test]
fn known_lifestate_dead() {
assert_eq!(lifestate_name(2), "dead");
}
#[test]
fn known_lifestate_respawning() {
assert_eq!(lifestate_name(4), "respawning");
}
#[test]
fn count_sentinel_not_present() {
assert_eq!(lifestate_name(5), "LIFESTATE_NOT_FOUND");
}
#[test]
fn unknown_lifestate() {
assert_eq!(lifestate_name(99), "LIFESTATE_NOT_FOUND");
}
#[test]
fn all_lifestates_count() {
assert_eq!(all_lifestates().len(), 5);
}
}