use serde::Serialize;
use strum::{EnumString, EnumVariantNames};
#[derive(
Clone,
Copy,
Debug,
Hash,
Serialize,
Eq,
PartialEq,
PartialOrd,
Ord,
strum::Display,
EnumString,
EnumVariantNames,
)]
#[allow(clippy::upper_case_acronyms)]
#[strum(ascii_case_insensitive)]
#[non_exhaustive]
pub enum Provider {
AWS,
Azure,
DigitalOcean,
Equinix,
GCP,
}
impl_deser_from_str!(Provider);
#[cfg(test)]
mod test_provider {
use super::*;
#[test]
fn provider_case_insensitive() {
let provider: Provider = serde_json::from_str("\"aws\"").unwrap();
assert_eq!(provider, Provider::AWS);
let provider: Provider = serde_json::from_str("\"Aws\"").unwrap();
assert_eq!(provider, Provider::AWS);
let provider: Provider = serde_json::from_str("\"AWS\"").unwrap();
assert_eq!(provider, Provider::AWS);
}
}
#[derive(
strum::Display, EnumString, Debug, Serialize, Hash, Eq, PartialEq, PartialOrd, Ord, Copy, Clone,
)]
#[allow(clippy::upper_case_acronyms)]
#[strum(ascii_case_insensitive)]
#[non_exhaustive]
pub enum Region {
XA,
XC,
XE,
XF,
XN,
XO,
XQ,
XS,
XU,
}
impl_deser_from_str!(Region);
#[cfg(test)]
mod test_region {
use super::*;
#[test]
fn region_case_insensitive() {
let region: Region = serde_json::from_str("\"xn\"").unwrap();
assert_eq!(region, Region::XN);
let region: Region = serde_json::from_str("\"Xn\"").unwrap();
assert_eq!(region, Region::XN);
let region: Region = serde_json::from_str("\"XN\"").unwrap();
assert_eq!(region, Region::XN);
}
}