#[derive(
Clone,
Copy,
Debug,
Eq,
Hash,
PartialEq,
strum_macros::AsRefStr,
strum_macros::EnumString,
strum_macros::IntoStaticStr,
)]
#[strum(ascii_case_insensitive)]
#[cfg_attr(test, derive(strum_macros::EnumIter))]
#[non_exhaustive]
pub enum TabularMethod {
#[strum(to_string = "TTSE")]
Ttse,
#[strum(to_string = "BICUBIC")]
Bicubic,
}
#[cfg(test)]
mod tests {
use std::str::FromStr;
use rstest::*;
use super::{TabularMethod::*, *};
#[rstest]
#[case(Ttse, "TTSE")]
#[case(Bicubic, "BICUBIC")]
fn as_str(#[case] sut: TabularMethod, #[case] expected: &str) {
let str = sut.as_ref();
let static_str: &'static str = sut.into();
assert_eq!(str, expected);
assert_eq!(static_str, expected);
}
#[rstest]
#[case(vec!["TTSE", "ttse"], Ttse)]
#[case(vec!["BICUBIC", "bicubic"], Bicubic)]
fn from_valid_str(#[case] valid: Vec<&str>, #[case] expected: TabularMethod) {
for s in valid {
let res1 = TabularMethod::from_str(s).unwrap();
let res2 = TabularMethod::try_from(s).unwrap();
assert_eq!(res1, expected);
assert_eq!(res2, expected);
}
}
#[rstest]
#[case("")]
#[case("Hello, World!")]
fn from_invalid_str(#[case] invalid: &str) {
let res1 = TabularMethod::from_str(invalid);
let res2 = TabularMethod::try_from(invalid);
assert!(res1.is_err());
assert!(res2.is_err());
}
}