use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[non_exhaustive]
pub enum TechnicalResourceUsage {
#[serde(rename = "STROMVERBRAUCHSART")]
ElectricityConsumptionType,
#[serde(rename = "STROMERZEUGUNGSART")]
ElectricityGenerationType,
#[serde(rename = "SPEICHER")]
Storage,
}
impl TechnicalResourceUsage {
pub fn german_name(&self) -> &'static str {
match self {
Self::ElectricityConsumptionType => "Stromverbrauchsart",
Self::ElectricityGenerationType => "Stromerzeugungsart",
Self::Storage => "Speicher",
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_serialize() {
assert_eq!(
serde_json::to_string(&TechnicalResourceUsage::Storage).unwrap(),
r#""SPEICHER""#
);
}
#[test]
fn test_roundtrip() {
for usage in [
TechnicalResourceUsage::ElectricityConsumptionType,
TechnicalResourceUsage::ElectricityGenerationType,
TechnicalResourceUsage::Storage,
] {
let json = serde_json::to_string(&usage).unwrap();
let parsed: TechnicalResourceUsage = serde_json::from_str(&json).unwrap();
assert_eq!(usage, parsed);
}
}
}