use monty_types::{ExcType, MontyType};
use strum::IntoEnumIterator;
#[test]
fn type_name_round_trips_through_from_type_name() {
for t in MontyType::iter() {
let name = t.to_string();
assert_eq!(
MontyType::from_type_name(&name),
Some(t.clone()),
"MontyType::from_type_name({name:?}) does not round-trip {t:?}"
);
}
}
#[test]
fn exception_type_names_round_trip() {
for exc in [ExcType::ValueError, ExcType::JsonDecodeError, ExcType::Exception] {
let t = MontyType::Exception(exc);
assert_eq!(MontyType::from_type_name(&t.to_string()), Some(t));
}
assert_eq!(MontyType::from_type_name("exception"), None);
}
#[test]
fn instance_type_is_not_nameable() {
let t = MontyType::Instance("Foo".to_owned());
assert_eq!(t.to_string(), "Foo");
assert_eq!(t.name(), "Foo");
assert_eq!(MontyType::from_type_name("Foo"), None);
assert_eq!(MontyType::from_type_name("object"), None);
}