bo4e_core/enums/
measured_quantity.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
11#[non_exhaustive]
12pub enum MeasuredQuantity {
13 #[serde(rename = "STROM")]
15 Current,
16
17 #[serde(rename = "SPANNUNG")]
19 Voltage,
20
21 #[serde(rename = "WIRKLEISTUNG")]
23 ActivePower,
24
25 #[serde(rename = "BLINDLEISTUNG")]
27 ReactivePower,
28
29 #[serde(rename = "DRUCK")]
31 Pressure,
32
33 #[serde(rename = "LASTGANG")]
35 LoadProfile,
36
37 #[serde(rename = "LASTPROFIL")]
39 StandardLoadProfile,
40
41 #[serde(rename = "TEMPERATUR")]
43 Temperature,
44
45 #[serde(rename = "ZZAHL")]
47 StateNumber,
48
49 #[serde(rename = "BRENNWERT")]
51 CalorificValue,
52
53 #[serde(rename = "GRADTZAGSZAHLEN")]
55 DegreeDays,
56
57 #[serde(rename = "VOLUMENSTROM")]
59 VolumeFlow,
60
61 #[serde(rename = "PREISE")]
63 Prices,
64}
65
66impl MeasuredQuantity {
67 pub fn german_name(&self) -> &'static str {
69 match self {
70 Self::Current => "Strom",
71 Self::Voltage => "Spannung",
72 Self::ActivePower => "Wirkleistung",
73 Self::ReactivePower => "Blindleistung",
74 Self::Pressure => "Druck",
75 Self::LoadProfile => "Lastgang",
76 Self::StandardLoadProfile => "Lastprofil",
77 Self::Temperature => "Temperatur",
78 Self::StateNumber => "Zustandszahl",
79 Self::CalorificValue => "Brennwert",
80 Self::DegreeDays => "Gradtagszahlen",
81 Self::VolumeFlow => "Volumenstrom",
82 Self::Prices => "Preise",
83 }
84 }
85}
86
87#[cfg(test)]
88mod tests {
89 use super::*;
90
91 #[test]
92 fn test_serialize() {
93 assert_eq!(
94 serde_json::to_string(&MeasuredQuantity::Voltage).unwrap(),
95 r#""SPANNUNG""#
96 );
97 }
98
99 #[test]
100 fn test_roundtrip() {
101 for quantity in [
102 MeasuredQuantity::Current,
103 MeasuredQuantity::Voltage,
104 MeasuredQuantity::ActivePower,
105 MeasuredQuantity::ReactivePower,
106 MeasuredQuantity::Pressure,
107 MeasuredQuantity::LoadProfile,
108 MeasuredQuantity::StandardLoadProfile,
109 MeasuredQuantity::Temperature,
110 MeasuredQuantity::StateNumber,
111 MeasuredQuantity::CalorificValue,
112 MeasuredQuantity::DegreeDays,
113 MeasuredQuantity::VolumeFlow,
114 MeasuredQuantity::Prices,
115 ] {
116 let json = serde_json::to_string(&quantity).unwrap();
117 let parsed: MeasuredQuantity = serde_json::from_str(&json).unwrap();
118 assert_eq!(quantity, parsed);
119 }
120 }
121}