bo4e_core/enums/
tariff_time.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
11#[non_exhaustive]
12pub enum TariffTime {
13 #[serde(rename = "TZ_STANDARD")]
15 Standard,
16
17 #[serde(rename = "TZ_HT")]
19 HighTariff,
20
21 #[serde(rename = "TZ_NT")]
23 LowTariff,
24}
25
26impl TariffTime {
27 pub fn german_name(&self) -> &'static str {
29 match self {
30 Self::Standard => "Tarifzeit Standard",
31 Self::HighTariff => "Tarifzeit HT (Hochtarif)",
32 Self::LowTariff => "Tarifzeit NT (Niedrigtarif)",
33 }
34 }
35}
36
37#[cfg(test)]
38mod tests {
39 use super::*;
40
41 #[test]
42 fn test_serialize() {
43 assert_eq!(
44 serde_json::to_string(&TariffTime::Standard).unwrap(),
45 r#""TZ_STANDARD""#
46 );
47 assert_eq!(
48 serde_json::to_string(&TariffTime::HighTariff).unwrap(),
49 r#""TZ_HT""#
50 );
51 assert_eq!(
52 serde_json::to_string(&TariffTime::LowTariff).unwrap(),
53 r#""TZ_NT""#
54 );
55 }
56
57 #[test]
58 fn test_roundtrip() {
59 for time in [
60 TariffTime::Standard,
61 TariffTime::HighTariff,
62 TariffTime::LowTariff,
63 ] {
64 let json = serde_json::to_string(&time).unwrap();
65 let parsed: TariffTime = serde_json::from_str(&json).unwrap();
66 assert_eq!(time, parsed);
67 }
68 }
69}