bo4e_core/enums/
meter_size.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
11#[non_exhaustive]
12pub enum MeterSize {
13 #[serde(rename = "G2KOMMA5")]
15 G2_5,
16
17 #[serde(rename = "G4")]
19 G4,
20
21 #[serde(rename = "G6")]
23 G6,
24
25 #[serde(rename = "G10")]
27 G10,
28
29 #[serde(rename = "G16")]
31 G16,
32
33 #[serde(rename = "G25")]
35 G25,
36
37 #[serde(rename = "G40")]
39 G40,
40
41 #[serde(rename = "G65")]
43 G65,
44
45 #[serde(rename = "G100")]
47 G100,
48
49 #[serde(rename = "G160")]
51 G160,
52
53 #[serde(rename = "G250")]
55 G250,
56
57 #[serde(rename = "G400")]
59 G400,
60
61 #[serde(rename = "G650")]
63 G650,
64
65 #[serde(rename = "G1000")]
67 G1000,
68
69 #[serde(rename = "G1600")]
71 G1600,
72
73 #[serde(rename = "G2500")]
75 G2500,
76
77 #[serde(rename = "G4000")]
79 G4000,
80
81 #[serde(rename = "G6500")]
83 G6500,
84
85 #[serde(rename = "G10000")]
87 G10000,
88
89 #[serde(rename = "G12500")]
91 G12500,
92
93 #[serde(rename = "G16000")]
95 G16000,
96}
97
98impl MeterSize {
99 pub fn german_name(&self) -> &'static str {
101 match self {
102 Self::G2_5 => "G2,5",
103 Self::G4 => "G4",
104 Self::G6 => "G6",
105 Self::G10 => "G10",
106 Self::G16 => "G16",
107 Self::G25 => "G25",
108 Self::G40 => "G40",
109 Self::G65 => "G65",
110 Self::G100 => "G100",
111 Self::G160 => "G160",
112 Self::G250 => "G250",
113 Self::G400 => "G400",
114 Self::G650 => "G650",
115 Self::G1000 => "G1000",
116 Self::G1600 => "G1600",
117 Self::G2500 => "G2500",
118 Self::G4000 => "G4000",
119 Self::G6500 => "G6500",
120 Self::G10000 => "G10000",
121 Self::G12500 => "G12500",
122 Self::G16000 => "G16000",
123 }
124 }
125}
126
127#[cfg(test)]
128mod tests {
129 use super::*;
130
131 #[test]
132 fn test_serialize() {
133 assert_eq!(serde_json::to_string(&MeterSize::G4).unwrap(), r#""G4""#);
134 assert_eq!(
135 serde_json::to_string(&MeterSize::G2_5).unwrap(),
136 r#""G2KOMMA5""#
137 );
138 }
139
140 #[test]
141 fn test_roundtrip() {
142 for size in [
143 MeterSize::G2_5,
144 MeterSize::G4,
145 MeterSize::G6,
146 MeterSize::G10,
147 MeterSize::G16,
148 MeterSize::G25,
149 MeterSize::G40,
150 MeterSize::G65,
151 MeterSize::G100,
152 ] {
153 let json = serde_json::to_string(&size).unwrap();
154 let parsed: MeterSize = serde_json::from_str(&json).unwrap();
155 assert_eq!(size, parsed);
156 }
157 }
158}