bo4e_core/enums/
measured_quantity.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 = "Messgroesse"))]
13#[non_exhaustive]
14pub enum MeasuredQuantity {
15 #[serde(rename = "STROM")]
17 Current,
18
19 #[serde(rename = "SPANNUNG")]
21 Voltage,
22
23 #[serde(rename = "WIRKLEISTUNG")]
25 ActivePower,
26
27 #[serde(rename = "BLINDLEISTUNG")]
29 ReactivePower,
30
31 #[serde(rename = "DRUCK")]
33 Pressure,
34
35 #[serde(rename = "LASTGANG")]
37 LoadProfile,
38
39 #[serde(rename = "LASTPROFIL")]
41 StandardLoadProfile,
42
43 #[serde(rename = "TEMPERATUR")]
45 Temperature,
46
47 #[serde(rename = "ZZAHL")]
49 StateNumber,
50
51 #[serde(rename = "BRENNWERT")]
53 CalorificValue,
54
55 #[serde(rename = "GRADTZAGSZAHLEN")]
57 DegreeDays,
58
59 #[serde(rename = "VOLUMENSTROM")]
61 VolumeFlow,
62
63 #[serde(rename = "PREISE")]
65 Prices,
66}
67
68impl MeasuredQuantity {
69 pub fn german_name(&self) -> &'static str {
71 match self {
72 Self::Current => "Strom",
73 Self::Voltage => "Spannung",
74 Self::ActivePower => "Wirkleistung",
75 Self::ReactivePower => "Blindleistung",
76 Self::Pressure => "Druck",
77 Self::LoadProfile => "Lastgang",
78 Self::StandardLoadProfile => "Lastprofil",
79 Self::Temperature => "Temperatur",
80 Self::StateNumber => "Zustandszahl",
81 Self::CalorificValue => "Brennwert",
82 Self::DegreeDays => "Gradtagszahlen",
83 Self::VolumeFlow => "Volumenstrom",
84 Self::Prices => "Preise",
85 }
86 }
87}
88
89#[cfg(test)]
90mod tests {
91 use super::*;
92
93 #[test]
94 fn test_serialize() {
95 assert_eq!(
96 serde_json::to_string(&MeasuredQuantity::Voltage).unwrap(),
97 r#""SPANNUNG""#
98 );
99 }
100
101 #[test]
102 fn test_roundtrip() {
103 for quantity in [
104 MeasuredQuantity::Current,
105 MeasuredQuantity::Voltage,
106 MeasuredQuantity::ActivePower,
107 MeasuredQuantity::ReactivePower,
108 MeasuredQuantity::Pressure,
109 MeasuredQuantity::LoadProfile,
110 MeasuredQuantity::StandardLoadProfile,
111 MeasuredQuantity::Temperature,
112 MeasuredQuantity::StateNumber,
113 MeasuredQuantity::CalorificValue,
114 MeasuredQuantity::DegreeDays,
115 MeasuredQuantity::VolumeFlow,
116 MeasuredQuantity::Prices,
117 ] {
118 let json = serde_json::to_string(&quantity).unwrap();
119 let parsed: MeasuredQuantity = serde_json::from_str(&json).unwrap();
120 assert_eq!(quantity, parsed);
121 }
122 }
123}