bo4e_core/enums/
meter_size.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 = "Zaehlergroesse"))]
13#[non_exhaustive]
14pub enum MeterSize {
15 #[serde(rename = "G2KOMMA5")]
17 G2_5,
18
19 #[serde(rename = "G4")]
21 G4,
22
23 #[serde(rename = "G6")]
25 G6,
26
27 #[serde(rename = "G10")]
29 G10,
30
31 #[serde(rename = "G16")]
33 G16,
34
35 #[serde(rename = "G25")]
37 G25,
38
39 #[serde(rename = "G40")]
41 G40,
42
43 #[serde(rename = "G65")]
45 G65,
46
47 #[serde(rename = "G100")]
49 G100,
50
51 #[serde(rename = "G160")]
53 G160,
54
55 #[serde(rename = "G250")]
57 G250,
58
59 #[serde(rename = "G400")]
61 G400,
62
63 #[serde(rename = "G650")]
65 G650,
66
67 #[serde(rename = "G1000")]
69 G1000,
70
71 #[serde(rename = "G1600")]
73 G1600,
74
75 #[serde(rename = "G2500")]
77 G2500,
78
79 #[serde(rename = "G4000")]
81 G4000,
82
83 #[serde(rename = "G6500")]
85 G6500,
86
87 #[serde(rename = "G10000")]
89 G10000,
90
91 #[serde(rename = "G12500")]
93 G12500,
94
95 #[serde(rename = "G16000")]
97 G16000,
98}
99
100impl MeterSize {
101 pub fn german_name(&self) -> &'static str {
103 match self {
104 Self::G2_5 => "G2,5",
105 Self::G4 => "G4",
106 Self::G6 => "G6",
107 Self::G10 => "G10",
108 Self::G16 => "G16",
109 Self::G25 => "G25",
110 Self::G40 => "G40",
111 Self::G65 => "G65",
112 Self::G100 => "G100",
113 Self::G160 => "G160",
114 Self::G250 => "G250",
115 Self::G400 => "G400",
116 Self::G650 => "G650",
117 Self::G1000 => "G1000",
118 Self::G1600 => "G1600",
119 Self::G2500 => "G2500",
120 Self::G4000 => "G4000",
121 Self::G6500 => "G6500",
122 Self::G10000 => "G10000",
123 Self::G12500 => "G12500",
124 Self::G16000 => "G16000",
125 }
126 }
127}
128
129#[cfg(test)]
130mod tests {
131 use super::*;
132
133 #[test]
134 fn test_serialize() {
135 assert_eq!(serde_json::to_string(&MeterSize::G4).unwrap(), r#""G4""#);
136 assert_eq!(
137 serde_json::to_string(&MeterSize::G2_5).unwrap(),
138 r#""G2KOMMA5""#
139 );
140 }
141
142 #[test]
143 fn test_roundtrip() {
144 for size in [
145 MeterSize::G2_5,
146 MeterSize::G4,
147 MeterSize::G6,
148 MeterSize::G10,
149 MeterSize::G16,
150 MeterSize::G25,
151 MeterSize::G40,
152 MeterSize::G65,
153 MeterSize::G100,
154 ] {
155 let json = serde_json::to_string(&size).unwrap();
156 let parsed: MeterSize = serde_json::from_str(&json).unwrap();
157 assert_eq!(size, parsed);
158 }
159 }
160}