diff --git a/crates/xml/tests/de_enum.rs b/crates/xml/tests/de_enum.rs index 5df786c..319b777 100644 --- a/crates/xml/tests/de_enum.rs +++ b/crates/xml/tests/de_enum.rs @@ -112,3 +112,52 @@ fn test_enum_document() { Document::Goodbye ); } + +#[test] +fn test_untagged_enum() { + #[derive(Debug, XmlDeserialize, XmlRootTag, PartialEq)] + #[xml(root = b"document")] + struct Document { + prop: PropElement, + } + + #[derive(Debug, XmlDeserialize, PartialEq)] + struct PropElement { + #[xml(ty = "untagged", flatten)] + props: Vec, + } + + #[derive(Debug, XmlDeserialize, PartialEq)] + #[xml(untagged)] + enum Prop { + DefaultProp(DefaultProp), + ExtensionProp(ExtensionProp), + } + + #[derive(Debug, XmlDeserialize, PartialEq)] + enum DefaultProp { + Displayname(String), + } + #[derive(Debug, XmlDeserialize, PartialEq)] + enum ExtensionProp { + Extension(Extension), + } + + #[derive(Debug, XmlDeserialize, PartialEq)] + struct Extension { + okay: Option<()>, + nice: Option<()>, + } + + let doc = Document::parse_str( + r#" + + Hello + + Hello + + "#, + ) + .unwrap(); + dbg!(doc); +}