xmlity-quick-xml 0.0.9

XMLity implementation of quick-xml.
Documentation
use crate::define_test;
pub use xmlity::types::utils::CData;
pub use xmlity::{Deserialize, Serialize};

#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub enum CDataOrText {
    CData(CData<String>),
    String(String),
}

define_test!(
    cdata_or_text_enum,
    [
        (CDataOrText::String("Text".to_owned()), "Text"),
        (
            CDataOrText::CData(CData("CData".to_owned())),
            "<![CDATA[CData]]>"
        )
    ]
);

#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[xelement(name = "list")]
pub struct VariantList {
    pub text1: Vec<CDataOrText>,
}

fn mixed_cdata_list() -> VariantList {
    VariantList {
        text1: vec![
            CDataOrText::String("Text1".to_string()),
            CDataOrText::CData(CData("Text2".to_string())),
        ],
    }
}

define_test!(
    mixed_cdata_list_struct,
    [(mixed_cdata_list(), "<list>Text1<![CDATA[Text2]]></list>")]
);

#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[xelement(name = "elem")]
pub struct Elem(String);

#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[xelement(name = "mixed")]
pub struct MixedCDataSeparated {
    pub text1: Vec<CDataOrText>,
    pub elem: Elem,
    pub text2: String,
}

fn mixed_cdata_separated_1() -> MixedCDataSeparated {
    MixedCDataSeparated {
        text1: vec![
            CDataOrText::String("Text1".to_string()),
            CDataOrText::CData(CData("Text2".to_string())),
        ],
        elem: Elem("Text3".to_string()),
        text2: "Text4".to_string(),
    }
}

define_test!(
    mixed_cdata_separated,
    [(
        mixed_cdata_separated_1(),
        "<mixed>Text1<![CDATA[Text2]]><elem>Text3</elem>Text4</mixed>"
    )]
);