bo4e_core/enums/
eco_label.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
11#[non_exhaustive]
12pub enum EcoLabel {
13 #[serde(rename = "ENERGREEN")]
15 Energreen,
16
17 #[serde(rename = "GASGREEN_GRUENER_STROM")]
19 GasgreenGruenerStrom,
20
21 #[serde(rename = "GASGREEN")]
23 Gasgreen,
24
25 #[serde(rename = "GRUENER_STROM_GOLD")]
27 GruenerStromGold,
28
29 #[serde(rename = "GRUENER_STROM_SILBER")]
31 GruenerStromSilber,
32
33 #[serde(rename = "GRUENER_STROM")]
35 GruenerStrom,
36
37 #[serde(rename = "GRUENES_GAS")]
39 GruenesGas,
40
41 #[serde(rename = "NATURWATT_STROM")]
43 NaturwattStrom,
44
45 #[serde(rename = "OK_POWER")]
47 OkPower,
48
49 #[serde(rename = "RENEWABLE_PLUS")]
51 RenewablePlus,
52
53 #[serde(rename = "WATERGREEN")]
55 Watergreen,
56
57 #[serde(rename = "WATERGREEN_PLUS")]
59 WatergreenPlus,
60}
61
62impl EcoLabel {
63 pub fn german_name(&self) -> &'static str {
65 match self {
66 Self::Energreen => "Energreen",
67 Self::GasgreenGruenerStrom => "Gasgreen Grüner Strom",
68 Self::Gasgreen => "Gasgreen",
69 Self::GruenerStromGold => "Grüner Strom Gold",
70 Self::GruenerStromSilber => "Grüner Strom Silber",
71 Self::GruenerStrom => "Grüner Strom",
72 Self::GruenesGas => "Grünes Gas",
73 Self::NaturwattStrom => "Naturwatt Strom",
74 Self::OkPower => "ok-power",
75 Self::RenewablePlus => "RenewablePLUS",
76 Self::Watergreen => "Watergreen",
77 Self::WatergreenPlus => "Watergreen Plus",
78 }
79 }
80}
81
82#[cfg(test)]
83mod tests {
84 use super::*;
85
86 #[test]
87 fn test_serialize() {
88 assert_eq!(
89 serde_json::to_string(&EcoLabel::GruenerStromGold).unwrap(),
90 r#""GRUENER_STROM_GOLD""#
91 );
92 assert_eq!(
93 serde_json::to_string(&EcoLabel::OkPower).unwrap(),
94 r#""OK_POWER""#
95 );
96 }
97
98 #[test]
99 fn test_roundtrip() {
100 for label in [
101 EcoLabel::Energreen,
102 EcoLabel::GasgreenGruenerStrom,
103 EcoLabel::Gasgreen,
104 EcoLabel::GruenerStromGold,
105 EcoLabel::GruenerStromSilber,
106 EcoLabel::GruenerStrom,
107 EcoLabel::GruenesGas,
108 EcoLabel::NaturwattStrom,
109 EcoLabel::OkPower,
110 EcoLabel::RenewablePlus,
111 EcoLabel::Watergreen,
112 EcoLabel::WatergreenPlus,
113 ] {
114 let json = serde_json::to_string(&label).unwrap();
115 let parsed: EcoLabel = serde_json::from_str(&json).unwrap();
116 assert_eq!(label, parsed);
117 }
118 }
119}