execution_time/traits/
singular_plural.rs1#[derive(Debug)]
3pub enum Unit {
4 Second,
5 Minute,
6 Hour,
7 Day,
8}
9
10pub trait SingularPlural {
12 fn singular(&self) -> &str;
14
15 fn plural(&self) -> &str;
17}
18
19impl SingularPlural for Unit {
20 fn singular(&self) -> &str {
21 match self {
22 Unit::Second => "second",
23 Unit::Minute => "minute",
24 Unit::Hour => "hour",
25 Unit::Day => "day",
26 }
27 }
28
29 fn plural(&self) -> &str {
30 match self {
31 Unit::Second => "seconds",
32 Unit::Minute => "minutes",
33 Unit::Hour => "hours",
34 Unit::Day => "days",
35 }
36 }
37}
38
39#[cfg(test)]
40mod tests {
41 use super::*;
42
43 #[test]
44 fn test_singular_forms() {
45 assert_eq!(Unit::Second.singular(), "second");
47 assert_eq!(Unit::Minute.singular(), "minute");
48 assert_eq!(Unit::Hour.singular(), "hour");
49 assert_eq!(Unit::Day.singular(), "day");
50 }
51
52 #[test]
53 fn test_plural_forms() {
54 assert_eq!(Unit::Second.plural(), "seconds");
56 assert_eq!(Unit::Minute.plural(), "minutes");
57 assert_eq!(Unit::Hour.plural(), "hours");
58 assert_eq!(Unit::Day.plural(), "days");
59 }
60
61 #[test]
62 fn test_singular_plural_trait() {
63 let unit = Unit::Hour;
65 assert_eq!(unit.singular(), "hour");
66 assert_eq!(unit.plural(), "hours");
67 }
68}