diff --git a/Cargo.toml b/Cargo.toml index d10ce8e..bba4f9d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ authors = ["ImJeremyHe"] edition = "2018" name = "xmlserde" -version = "0.11.0" +version = "0.12.0" license = "MIT" description = "useful tool for serializing and deserializing xml" repository = "https://github.com/ImJeremyHe/xmlserde" @@ -13,4 +13,4 @@ readme = "README.md" quick-xml = { version = "0.37", features = ["serialize"] } [dev-dependencies] -xmlserde_derives = { path = "./derives", version = "0.11.0" } +xmlserde_derives = { path = "./derives", version = "0.12.0" } diff --git a/derives/Cargo.toml b/derives/Cargo.toml index 3f13b5f..0fc7615 100644 --- a/derives/Cargo.toml +++ b/derives/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "xmlserde_derives" -version = "0.11.0" +version = "0.12.0" description = "macros that help xmlserde serde the xml files" authors = ["ImJeremyHe"] license = "MIT" diff --git a/tests/lib.rs b/tests/lib.rs index 1709278..26108ac 100644 --- a/tests/lib.rs +++ b/tests/lib.rs @@ -900,4 +900,62 @@ mod tests { assert!(matches!(Status::default(), Status::Bird)); } + + pub fn default_one_u32() -> u32 { + 1 + } + + #[test] + fn test_ooxml_1() { + let xml = r#""#; + #[derive(Debug, XmlSerialize, XmlDeserialize)] + #[xmlserde(root = b"tableStyleElement")] + pub struct CtTableStyleElement { + #[xmlserde(name = b"type", ty = "attr")] + pub ty: StTableStyleType, + #[xmlserde(name = b"size", ty = "attr", default = "default_one_u32")] + pub size: u32, + #[xmlserde(name = b"dxfId", ty = "attr")] + pub dxf_id: Option, + } + + xml_serde_enum! { + /// 18.18.77 + #[derive(Debug, PartialEq, Eq)] + StTableStyleType { + WholeTable => "wholeTable", + HeaderRow => "headerRow", + TotalRow => "totalRow", + FirstColumn => "firstColumn", + LastColumn => "lastColumn", + FirstRowStripe => "firstRowStripe", + SecondRowStripe => "secondRowStripe", + FirstColumnStripe => "firstColumnStripe", + SecondColumnStripe => "secondColumnStripe", + FirstHeaderCell => "firstHeaderCell", + LastHeaderCell => "lastHeaderCell", + FirstTotalCell => "firstTotalCell", + LastTotalCell => "lastTotalCell", + FirstSubtotalColumn => "firstSubtotalColumn", + SecondSubtotalColumn => "secondSubtotalColumn", + ThirdSubtotalColumn => "thirdSubtotalColumn", + FirstSubtotalRow => "firstSubtotalRow", + SecondSubtotalRow => "secondSubtotalRow", + ThirdSubtotalRow => "thirdSubtotalRow", + BlankRow => "blankRow", + FirstColumnSubheading => "firstColumnSubheading", + SecondColumnSubheading => "secondColumnSubheading", + ThirdColumnSubheading => "thirdColumnSubheading", + FirstRowSubheading => "firstRowSubheading", + SecondRowSubheading => "secondRowSubheading", + ThirdRowSubheading => "thirdRowSubheading", + PageFieldLabels => "pageFieldLabels", + PageFieldVal => "pageFieldVal", + } + } + let foo = xml_deserialize_from_str::(&xml).unwrap(); + assert_eq!(foo.ty, StTableStyleType::WholeTable); + assert_eq!(foo.size, 1); + assert_eq!(foo.dxf_id, Some(6)); + } }