bo4e_core/enums/
measured_value_status.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
11#[non_exhaustive]
12pub enum MeasuredValueStatus {
13 #[serde(rename = "ABGELESEN")]
15 Read,
16
17 #[serde(rename = "ERSATZWERT")]
19 Substitute,
20
21 #[serde(rename = "ANGABE_FUER_LIEFERSCHEIN")]
23 DeliveryNoteInfo,
24
25 #[serde(rename = "VORSCHLAGSWERT")]
27 Proposed,
28
29 #[serde(rename = "NICHT_VERWENDBAR")]
31 NotUsable,
32
33 #[serde(rename = "PROGNOSEWERT")]
35 Forecast,
36
37 #[serde(rename = "VORLAEUFIGERWERT")]
39 Preliminary,
40
41 #[serde(rename = "ENERGIEMENGESUMMIERT")]
43 EnergySummed,
44
45 #[serde(rename = "FEHLT")]
47 Missing,
48}
49
50impl MeasuredValueStatus {
51 pub fn german_name(&self) -> &'static str {
53 match self {
54 Self::Read => "Abgelesen",
55 Self::Substitute => "Ersatzwert",
56 Self::DeliveryNoteInfo => "Angabe für Lieferschein",
57 Self::Proposed => "Vorschlagswert",
58 Self::NotUsable => "Nicht verwendbar",
59 Self::Forecast => "Prognosewert",
60 Self::Preliminary => "Vorläufiger Wert",
61 Self::EnergySummed => "Energiemenge summiert",
62 Self::Missing => "Fehlt",
63 }
64 }
65}
66
67#[cfg(test)]
68mod tests {
69 use super::*;
70
71 #[test]
72 fn test_serialize() {
73 assert_eq!(
74 serde_json::to_string(&MeasuredValueStatus::Read).unwrap(),
75 r#""ABGELESEN""#
76 );
77 }
78
79 #[test]
80 fn test_roundtrip() {
81 for status in [
82 MeasuredValueStatus::Read,
83 MeasuredValueStatus::Substitute,
84 MeasuredValueStatus::DeliveryNoteInfo,
85 MeasuredValueStatus::Proposed,
86 MeasuredValueStatus::NotUsable,
87 MeasuredValueStatus::Forecast,
88 MeasuredValueStatus::Preliminary,
89 MeasuredValueStatus::EnergySummed,
90 MeasuredValueStatus::Missing,
91 ] {
92 let json = serde_json::to_string(&status).unwrap();
93 let parsed: MeasuredValueStatus = serde_json::from_str(&json).unwrap();
94 assert_eq!(status, parsed);
95 }
96 }
97}