use xml_core::{BytesEnd, BytesStart, BytesText, Event, Reader, Writer};
#[test]
fn round_trips_a_minimal_document() {
let input = r#"<root attr="value"><child>text</child></root>"#;
let mut reader = Reader::from_xml_str(input);
let mut writer = Writer::new(Vec::new());
loop {
match reader.read_event().expect("input should be well-formed") {
Event::Eof => break,
event => writer.write_event(event).expect("write should succeed"),
}
}
let output = writer.into_inner();
assert_eq!(output, input.as_bytes());
}
#[test]
fn builds_a_document_from_scratch_and_reads_it_back() {
let mut writer = Writer::new(Vec::new());
let mut root = BytesStart::new("root");
root.push_attribute(("attr", "value"));
writer.write_event(Event::Start(root)).unwrap();
writer
.write_event(Event::Start(BytesStart::new("child")))
.unwrap();
writer
.write_event(Event::Text(BytesText::new("text")))
.unwrap();
writer
.write_event(Event::End(BytesEnd::new("child")))
.unwrap();
writer
.write_event(Event::End(BytesEnd::new("root")))
.unwrap();
let output = writer.into_inner();
let xml = String::from_utf8(output).unwrap();
let mut reader = Reader::from_xml_str(&xml);
let mut texts = Vec::new();
loop {
match reader.read_event().unwrap() {
Event::Eof => break,
Event::Text(text) => texts.push(text.decode().unwrap().into_owned()),
_ => {}
}
}
assert_eq!(texts, vec!["text".to_string()]);
}