bo4e_core/enums/
market_role.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
9#[non_exhaustive]
10pub enum MarketRole {
11 #[serde(rename = "BTR")]
13 TechnicalResourceOperator,
14
15 #[serde(rename = "BIKO")]
17 BalanceCoordinator,
18
19 #[serde(rename = "BKV")]
21 BalanceResponsibleParty,
22
23 #[serde(rename = "DP")]
25 DataProvider,
26
27 #[serde(rename = "EIV")]
29 DeploymentResponsible,
30
31 #[serde(rename = "ESA")]
33 EnergyServiceProvider,
34
35 #[serde(rename = "KN")]
37 CapacityUser,
38
39 #[serde(rename = "LF")]
41 Supplier,
42
43 #[serde(rename = "MGV")]
45 MarketAreaManager,
46
47 #[serde(rename = "MSB")]
49 MeteringPointOperator,
50
51 #[serde(rename = "NB")]
53 NetworkOperator,
54
55 #[serde(rename = "RB")]
57 RegisterOperator,
58
59 #[serde(rename = "UENB")]
61 TransmissionSystemOperator,
62}
63
64impl MarketRole {
65 pub fn german_name(&self) -> &'static str {
67 match self {
68 Self::TechnicalResourceOperator => "Betreiber einer technischen Ressource",
69 Self::BalanceCoordinator => "Bilanzkoordinator",
70 Self::BalanceResponsibleParty => "Bilanzkreisverantwortlicher",
71 Self::DataProvider => "Data Provider",
72 Self::DeploymentResponsible => "Einsatzverantwortlicher",
73 Self::EnergyServiceProvider => "Energieserviceanbieter des Anschlussnutzers",
74 Self::CapacityUser => "Kapazitaetsnutzer",
75 Self::Supplier => "Lieferant",
76 Self::MarketAreaManager => "Marktgebietsverantwortlicher",
77 Self::MeteringPointOperator => "Messstellenbetreiber",
78 Self::NetworkOperator => "Netzbetreiber",
79 Self::RegisterOperator => "Registerbetreiber",
80 Self::TransmissionSystemOperator => "Uebertragungsnetzbetreiber",
81 }
82 }
83}
84
85#[cfg(test)]
86mod tests {
87 use super::*;
88
89 #[test]
90 fn test_serialize() {
91 assert_eq!(
92 serde_json::to_string(&MarketRole::NetworkOperator).unwrap(),
93 r#""NB""#
94 );
95 assert_eq!(
96 serde_json::to_string(&MarketRole::Supplier).unwrap(),
97 r#""LF""#
98 );
99 }
100
101 #[test]
102 fn test_deserialize() {
103 assert_eq!(
104 serde_json::from_str::<MarketRole>(r#""MSB""#).unwrap(),
105 MarketRole::MeteringPointOperator
106 );
107 assert_eq!(
108 serde_json::from_str::<MarketRole>(r#""BKV""#).unwrap(),
109 MarketRole::BalanceResponsibleParty
110 );
111 }
112
113 #[test]
114 fn test_roundtrip() {
115 for role in [
116 MarketRole::TechnicalResourceOperator,
117 MarketRole::BalanceCoordinator,
118 MarketRole::BalanceResponsibleParty,
119 MarketRole::DataProvider,
120 MarketRole::DeploymentResponsible,
121 MarketRole::EnergyServiceProvider,
122 MarketRole::CapacityUser,
123 MarketRole::Supplier,
124 MarketRole::MarketAreaManager,
125 MarketRole::MeteringPointOperator,
126 MarketRole::NetworkOperator,
127 MarketRole::RegisterOperator,
128 MarketRole::TransmissionSystemOperator,
129 ] {
130 let json = serde_json::to_string(&role).unwrap();
131 let parsed: MarketRole = serde_json::from_str(&json).unwrap();
132 assert_eq!(role, parsed);
133 }
134 }
135}