diff --git a/enumscribe_tests/tests/test_serde.rs b/enumscribe_tests/tests/test_serde.rs new file mode 100644 index 0000000..a3aed39 --- /dev/null +++ b/enumscribe_tests/tests/test_serde.rs @@ -0,0 +1,25 @@ +use enumscribe::EnumDeserialize; + +#[test] +fn test_deserialize() { + #[derive(EnumDeserialize, Eq, PartialEq, Debug)] + enum E0 { + V0, + #[enumscribe(str = "baa", case_insensitive)] + V1, + #[enumscribe(str = "bAz\n", case_insensitive)] + V2, + #[enumscribe(str = "蟹")] + V3, + } + + assert_eq!(serde_json::from_str::(r#""V0""#).unwrap(), E0::V0); + assert!(serde_json::from_str::(r#""v0""#).is_err()); + assert_eq!(serde_json::from_str::(r#""baa""#).unwrap(), E0::V1); + assert_eq!(serde_json::from_str::(r#""BAA""#).unwrap(), E0::V1); + assert_eq!(serde_json::from_str::(r#""BaA""#).unwrap(), E0::V1); + assert_eq!(serde_json::from_str::(r#""baz\n""#).unwrap(), E0::V2); + assert_eq!(serde_json::from_str::(r#""BAZ\n""#).unwrap(), E0::V2); + assert_eq!(serde_json::from_str::(r#""BaZ\n""#).unwrap(), E0::V2); + assert_eq!(serde_json::from_str::(r#""\u87f9""#).unwrap(), E0::V3); +}