1#[derive(Debug, Clone, PartialEq)]
3pub enum Severity {
4 Ok,
5 Warning,
6 Fail,
7}
8
9impl Severity {
10 pub fn to_emoji(&self) -> &'static str {
11 match self {
12 Severity::Ok => "✅",
13 Severity::Warning => "⚠️",
14 Severity::Fail => "⛔",
15 }
16 }
17}
18
19impl std::fmt::Display for Severity {
20 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
21 write!(f, "{}", self.to_emoji())
22 }
23}
24
25#[cfg(test)]
26mod tests {
27 use super::*;
28
29 #[test]
30 fn ok_severity_returns_checkmark_emoji() {
31 assert_eq!(Severity::Ok.to_emoji(), "✅");
32 }
33
34 #[test]
35 fn warning_severity_returns_warning_emoji() {
36 assert_eq!(Severity::Warning.to_emoji(), "⚠️");
37 }
38
39 #[test]
40 fn fail_severity_returns_no_entry_emoji() {
41 assert_eq!(Severity::Fail.to_emoji(), "⛔");
42 }
43
44 #[test]
45 fn severity_display_uses_emoji() {
46 assert_eq!(format!("{}", Severity::Ok), "✅");
47 assert_eq!(format!("{}", Severity::Warning), "⚠️");
48 assert_eq!(format!("{}", Severity::Fail), "⛔");
49 }
50
51 #[test]
52 fn severity_equality() {
53 assert_eq!(Severity::Ok, Severity::Ok);
54 assert_eq!(Severity::Warning, Severity::Warning);
55 assert_eq!(Severity::Fail, Severity::Fail);
56 assert_ne!(Severity::Ok, Severity::Fail);
57 }
58}