bo4e_core/enums/
medium.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 = "Medium"))]
13#[non_exhaustive]
14pub enum Medium {
15 #[serde(rename = "STROM")]
17 Electricity,
18
19 #[serde(rename = "GAS")]
21 Gas,
22
23 #[serde(rename = "WASSER")]
25 Water,
26
27 #[serde(rename = "DAMPF")]
29 Steam,
30}
31
32impl Medium {
33 pub fn german_name(&self) -> &'static str {
35 match self {
36 Self::Electricity => "Strom",
37 Self::Gas => "Gas",
38 Self::Water => "Wasser",
39 Self::Steam => "Dampf",
40 }
41 }
42}
43
44#[cfg(test)]
45mod tests {
46 use super::*;
47
48 #[test]
49 fn test_serialize() {
50 assert_eq!(
51 serde_json::to_string(&Medium::Electricity).unwrap(),
52 r#""STROM""#
53 );
54 assert_eq!(serde_json::to_string(&Medium::Gas).unwrap(), r#""GAS""#);
55 }
56
57 #[test]
58 fn test_roundtrip() {
59 for medium in [
60 Medium::Electricity,
61 Medium::Gas,
62 Medium::Water,
63 Medium::Steam,
64 ] {
65 let json = serde_json::to_string(&medium).unwrap();
66 let parsed: Medium = serde_json::from_str(&json).unwrap();
67 assert_eq!(medium, parsed);
68 }
69 }
70}