From add740632a62e0cfdef022e0bdf960009f63f611 Mon Sep 17 00:00:00 2001 From: Mingun Date: Sun, 8 Jan 2023 13:11:26 +0500 Subject: [PATCH] Add regression test for #500 --- tests/serde-issues.rs | 62 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/tests/serde-issues.rs b/tests/serde-issues.rs index a0612cb7..8e57df0b 100644 --- a/tests/serde-issues.rs +++ b/tests/serde-issues.rs @@ -179,6 +179,68 @@ fn issue429() { ); } +/// Regression test for https://github.com/tafia/quick-xml/issues/500. +#[test] +fn issue500() { + #[derive(Debug, Deserialize, Serialize, PartialEq)] + struct TagOne {} + + #[derive(Debug, Deserialize, Serialize, PartialEq)] + struct TagTwo {} + + #[derive(Debug, Deserialize, Serialize, PartialEq)] + enum Tag { + TagOne(TagOne), + TagTwo(TagTwo), + } + + #[derive(Debug, Deserialize, Serialize, PartialEq)] + struct Root { + #[serde(rename = "$value", default)] + data: Vec, + } + + let data: Root = from_str( + "\ + \ + \ + \ + \ + \ + ", + ) + .unwrap(); + + assert_eq!( + data, + Root { + data: vec![ + Tag::TagOne(TagOne {}), + Tag::TagTwo(TagTwo {}), + Tag::TagOne(TagOne {}), + ], + } + ); + + let data: Vec = from_str( + "\ + \ + \ + \ + ", + ) + .unwrap(); + + assert_eq!( + data, + vec![ + Tag::TagOne(TagOne {}), + Tag::TagTwo(TagTwo {}), + Tag::TagOne(TagOne {}), + ] + ); +} + /// Regression test for https://github.com/tafia/quick-xml/issues/537. /// /// This test checks that special `xmlns:xxx` attributes uses full name of