bo4e_core/enums/
tariff_region_criterion.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 = "Tarifregionskriterium"))]
13#[non_exhaustive]
14pub enum TariffRegionCriterion {
15 #[serde(rename = "NETZ_NUMMER")]
17 NetworkNumber,
18
19 #[serde(rename = "POSTLEITZAHL")]
21 PostalCode,
22
23 #[serde(rename = "ORT")]
25 City,
26
27 #[serde(rename = "GRUNDVERSORGER_NUMMER")]
29 BasicSupplierNumber,
30
31 #[serde(rename = "REGION")]
33 Region,
34}
35
36impl TariffRegionCriterion {
37 pub fn german_name(&self) -> &'static str {
39 match self {
40 Self::NetworkNumber => "Netznummer",
41 Self::PostalCode => "Postleitzahl",
42 Self::City => "Ort",
43 Self::BasicSupplierNumber => "Grundversorgernummer",
44 Self::Region => "Region",
45 }
46 }
47}
48
49#[cfg(test)]
50mod tests {
51 use super::*;
52
53 #[test]
54 fn test_serialize() {
55 assert_eq!(
56 serde_json::to_string(&TariffRegionCriterion::PostalCode).unwrap(),
57 r#""POSTLEITZAHL""#
58 );
59 assert_eq!(
60 serde_json::to_string(&TariffRegionCriterion::City).unwrap(),
61 r#""ORT""#
62 );
63 }
64
65 #[test]
66 fn test_roundtrip() {
67 for criterion in [
68 TariffRegionCriterion::NetworkNumber,
69 TariffRegionCriterion::PostalCode,
70 TariffRegionCriterion::City,
71 TariffRegionCriterion::BasicSupplierNumber,
72 TariffRegionCriterion::Region,
73 ] {
74 let json = serde_json::to_string(&criterion).unwrap();
75 let parsed: TariffRegionCriterion = serde_json::from_str(&json).unwrap();
76 assert_eq!(criterion, parsed);
77 }
78 }
79}