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