dxr 0.8.0

Declarative XML-RPC
Documentation
use crate::serde::{XmlArray, XmlValue};
use crate::xml::{deserialize_xml as from_str, serialize_xml as to_string};

#[test]
fn to_array_empty() {
    let value = XmlArray::new(vec![]);
    let expected = "<array><data></data></array>";

    assert_eq!(to_string(&value).unwrap(), expected);
}

#[test]
fn from_array_empty() {
    let value = "<array><data/></array>";
    let expected = XmlArray::new(vec![]);

    assert_eq!(from_str::<XmlArray>(value).unwrap(), expected);

    let value = "<array><data></data></array>";
    let expected = XmlArray::new(vec![]);

    assert_eq!(from_str::<XmlArray>(value).unwrap(), expected);
}

#[test]
fn to_array_one() {
    let value = XmlArray::new(vec![XmlValue::i4(-12)]);
    let expected = "<array><data><value><i4>-12</i4></value></data></array>";

    assert_eq!(to_string(&value).unwrap(), expected);
}

#[test]
fn from_array_one() {
    let value = "<array><data><value><i4>-12</i4></value></data></array>";
    let expected = XmlArray::new(vec![XmlValue::i4(-12)]);

    assert_eq!(from_str::<XmlArray>(value).unwrap(), expected);
}

#[test]
fn to_array_two() {
    let value = XmlArray::new(vec![XmlValue::i4(-12), XmlValue::string(Into::into("minus twelve"))]);
    let expected =
        "<array><data><value><i4>-12</i4></value><value><string>minus twelve</string></value></data></array>";

    assert_eq!(to_string(&value).unwrap(), expected);
}

#[test]
fn from_array_two() {
    let value = "<array><data><value><i4>-12</i4></value><value><string>minus twelve</string></value></data></array>";
    let expected = XmlArray::new(vec![XmlValue::i4(-12), XmlValue::string(Into::into("minus twelve"))]);

    assert_eq!(from_str::<XmlArray>(value).unwrap(), expected);
}

#[test]
fn to_value_array() {
    let value = XmlValue::array(XmlArray::new(vec![XmlValue::i4(-12)]));
    let expected = "<value><array><data><value><i4>-12</i4></value></data></array></value>";

    assert_eq!(to_string(&value).unwrap(), expected);
}

#[test]
fn from_value_array() {
    let value = "<value><array><data><value><i4>-12</i4></value></data></array></value>";
    let expected = XmlValue::array(XmlArray::new(vec![XmlValue::i4(-12)]));

    assert_eq!(from_str::<XmlValue>(value).unwrap(), expected);
}