Skip to main content

boon/
teams.rs

1//! Team number to name mapping for Deadlock.
2//!
3//! Last updated: 2026-03-19
4
5/// All known team (number, name) pairs sorted by number.
6const TEAMS: &[(i64, &str)] = &[(1, "Spectator"), (2, "Hidden King"), (3, "Archmother")];
7
8/// Look up a team name by number. Returns `"TEAM_NOT_FOUND"` for unknown numbers.
9pub fn team_name(id: i64) -> &'static str {
10    TEAMS
11        .iter()
12        .find(|&&(k, _)| k == id)
13        .map(|&(_, v)| v)
14        .unwrap_or("TEAM_NOT_FOUND")
15}
16
17/// Return all known (team number, team name) pairs.
18pub fn all_teams() -> &'static [(i64, &'static str)] {
19    TEAMS
20}
21
22#[cfg(test)]
23mod tests {
24    use super::*;
25
26    #[test]
27    fn known_team_spectator() {
28        assert_eq!(team_name(1), "Spectator");
29    }
30
31    #[test]
32    fn known_team_hidden_king() {
33        assert_eq!(team_name(2), "Hidden King");
34    }
35
36    #[test]
37    fn known_team_archmother() {
38        assert_eq!(team_name(3), "Archmother");
39    }
40
41    #[test]
42    fn unknown_team() {
43        assert_eq!(team_name(99), "TEAM_NOT_FOUND");
44    }
45
46    #[test]
47    fn all_teams_count() {
48        assert_eq!(all_teams().len(), 3);
49    }
50}