bo4e_core/enums/
business_partner_role.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
11#[non_exhaustive]
12pub enum BusinessPartnerRole {
13 #[serde(rename = "LIEFERANT")]
15 Supplier,
16
17 #[serde(rename = "DIENSTLEISTER")]
19 ServiceProvider,
20
21 #[serde(rename = "KUNDE")]
23 Customer,
24
25 #[serde(rename = "INTERESSENT")]
27 InterestedParty,
28
29 #[serde(rename = "MARKTPARTNER")]
31 MarketPartner,
32
33 #[serde(rename = "NETZBETREIBER")]
35 NetworkOperator,
36}
37
38impl BusinessPartnerRole {
39 pub fn german_name(&self) -> &'static str {
41 match self {
42 Self::Supplier => "Lieferant",
43 Self::ServiceProvider => "Dienstleister",
44 Self::Customer => "Kunde",
45 Self::InterestedParty => "Interessent",
46 Self::MarketPartner => "Marktpartner",
47 Self::NetworkOperator => "Netzbetreiber",
48 }
49 }
50}
51
52#[cfg(test)]
53mod tests {
54 use super::*;
55
56 #[test]
57 fn test_serialize() {
58 assert_eq!(
59 serde_json::to_string(&BusinessPartnerRole::Supplier).unwrap(),
60 r#""LIEFERANT""#
61 );
62 assert_eq!(
63 serde_json::to_string(&BusinessPartnerRole::Customer).unwrap(),
64 r#""KUNDE""#
65 );
66 }
67
68 #[test]
69 fn test_deserialize() {
70 assert_eq!(
71 serde_json::from_str::<BusinessPartnerRole>(r#""LIEFERANT""#).unwrap(),
72 BusinessPartnerRole::Supplier
73 );
74 assert_eq!(
75 serde_json::from_str::<BusinessPartnerRole>(r#""DIENSTLEISTER""#).unwrap(),
76 BusinessPartnerRole::ServiceProvider
77 );
78 }
79
80 #[test]
81 fn test_roundtrip() {
82 for role in [
83 BusinessPartnerRole::Supplier,
84 BusinessPartnerRole::ServiceProvider,
85 BusinessPartnerRole::Customer,
86 BusinessPartnerRole::InterestedParty,
87 BusinessPartnerRole::MarketPartner,
88 BusinessPartnerRole::NetworkOperator,
89 ] {
90 let json = serde_json::to_string(&role).unwrap();
91 let parsed: BusinessPartnerRole = serde_json::from_str(&json).unwrap();
92 assert_eq!(role, parsed);
93 }
94 }
95}