1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
10pub enum Width {
11 Full,
12 Compact,
13 Minimal,
14 Degraded,
15}
16
17impl Width {
18 #[must_use]
19 pub const fn classify(cols: u16) -> Self {
20 if cols >= 120 {
21 Self::Full
22 } else if cols >= 80 {
23 Self::Compact
24 } else if cols >= 60 {
25 Self::Minimal
26 } else {
27 Self::Degraded
28 }
29 }
30}
31
32#[cfg(test)]
33mod tests {
34 use super::Width;
35
36 #[test]
37 fn bands() {
38 assert_eq!(Width::classify(200), Width::Full);
39 assert_eq!(Width::classify(120), Width::Full);
40 assert_eq!(Width::classify(119), Width::Compact);
41 assert_eq!(Width::classify(80), Width::Compact);
42 assert_eq!(Width::classify(79), Width::Minimal);
43 assert_eq!(Width::classify(60), Width::Minimal);
44 assert_eq!(Width::classify(59), Width::Degraded);
45 }
46}