1use num_enum::{IntoPrimitive, TryFromPrimitive};
2
3#[derive(Debug, Eq, PartialEq, TryFromPrimitive, IntoPrimitive)]
4#[repr(u8)]
5pub enum Table4_4 {
6 Minute = 0,
7 Hour,
8 Day,
9 Month,
10 Year,
11 Decade,
12 Normal,
13 Century,
14 ThreeHours = 10,
15 SixHours,
16 TwelveHours,
17 Second,
18 Missing = 255,
19}
20
21impl Table4_4 {
22 pub fn short_expr(&self) -> Option<&'static str> {
23 match self {
24 Self::Minute => Some("m"),
25 Self::Hour => Some("h"),
26 Self::Day => Some("D"),
27 Self::Month => Some("M"),
28 Self::Year => Some("Y"),
29 Self::Decade => Some("10Y"),
30 Self::Normal => Some("30Y"),
31 Self::Century => Some("C"),
32 Self::ThreeHours => Some("3h"),
33 Self::SixHours => Some("6h"),
34 Self::TwelveHours => Some("12h"),
35 Self::Second => Some("s"),
36 Self::Missing => None,
37 }
38 }
39}
40
41#[derive(Debug, Clone, Eq, PartialEq, TryFromPrimitive, IntoPrimitive)]
42#[repr(u8)]
43pub enum Table5_6 {
44 FirstOrderSpatialDifferencing = 1,
45 SecondOrderSpatialDifferencing,
46 Missing = 255,
47}
48
49#[cfg(test)]
50mod tests {
51 use num_enum::TryFromPrimitiveError;
52
53 use super::*;
54 use crate::codetables::*;
55
56 #[test]
57 fn num_enum_conversion() {
58 assert_eq!((Table4_4::try_from(1u8)), Ok(Table4_4::Hour));
59 assert_eq!((Table4_4::try_from(10u8)), Ok(Table4_4::ThreeHours));
60 assert_eq!(
61 (Table4_4::try_from(254u8)),
62 Err(TryFromPrimitiveError { number: 254 })
63 );
64 }
65
66 #[test]
67 fn num_lookup_result_conversion() {
68 assert_eq!(Code::from(Table4_4::try_from(1u8)), Name(Table4_4::Hour));
69 assert_eq!(Code::from(Table4_4::try_from(254u8)), Num(254));
70 }
71}