bo4e_core/enums/
medium.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
11#[non_exhaustive]
12pub enum Medium {
13 #[serde(rename = "STROM")]
15 Electricity,
16
17 #[serde(rename = "GAS")]
19 Gas,
20
21 #[serde(rename = "WASSER")]
23 Water,
24
25 #[serde(rename = "DAMPF")]
27 Steam,
28}
29
30impl Medium {
31 pub fn german_name(&self) -> &'static str {
33 match self {
34 Self::Electricity => "Strom",
35 Self::Gas => "Gas",
36 Self::Water => "Wasser",
37 Self::Steam => "Dampf",
38 }
39 }
40}
41
42#[cfg(test)]
43mod tests {
44 use super::*;
45
46 #[test]
47 fn test_serialize() {
48 assert_eq!(
49 serde_json::to_string(&Medium::Electricity).unwrap(),
50 r#""STROM""#
51 );
52 assert_eq!(serde_json::to_string(&Medium::Gas).unwrap(), r#""GAS""#);
53 }
54
55 #[test]
56 fn test_roundtrip() {
57 for medium in [
58 Medium::Electricity,
59 Medium::Gas,
60 Medium::Water,
61 Medium::Steam,
62 ] {
63 let json = serde_json::to_string(&medium).unwrap();
64 let parsed: Medium = serde_json::from_str(&json).unwrap();
65 assert_eq!(medium, parsed);
66 }
67 }
68}