use macro for unit tests
This commit is contained in:
parent
c22df74dd3
commit
b852f52a5e
@ -6,7 +6,16 @@ extern crate xml;
|
||||
|
||||
use std::io::Read;
|
||||
use xml::reader::EventReader;
|
||||
use yaserde::{YaDeserialize};
|
||||
use yaserde::YaDeserialize;
|
||||
|
||||
macro_rules! convert_and_validate {
|
||||
($content:expr, $model:expr) => {
|
||||
let mut parser = EventReader::from_str($content);
|
||||
|
||||
let loaded = XmlStruct::derive_deserialize(&mut parser, None);
|
||||
assert_eq!(loaded, Ok($model));
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn de_basic() {
|
||||
@ -16,13 +25,10 @@ fn de_basic() {
|
||||
item: String
|
||||
}
|
||||
|
||||
let content = "<base><item>something</item></base>".to_string();
|
||||
let mut parser = EventReader::from_str(content.as_str());
|
||||
|
||||
let loaded = XmlStruct::derive_deserialize(&mut parser, None);
|
||||
assert_eq!(loaded, Ok(XmlStruct{
|
||||
let content = "<base><item>something</item></base>";
|
||||
convert_and_validate!(content, XmlStruct{
|
||||
item: "something".to_string()
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -33,16 +39,13 @@ fn de_list_of_items() {
|
||||
items: Vec<String>
|
||||
}
|
||||
|
||||
let content = "<base><items>something1</items><items>something2</items></base>".to_string();
|
||||
let mut parser = EventReader::from_str(content.as_str());
|
||||
|
||||
let loaded = XmlStruct::derive_deserialize(&mut parser, None);
|
||||
assert_eq!(loaded, Ok(XmlStruct{
|
||||
let content = "<base><items>something1</items><items>something2</items></base>";
|
||||
convert_and_validate!(content, XmlStruct{
|
||||
items: vec![
|
||||
"something1".to_string(),
|
||||
"something2".to_string()
|
||||
]
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -70,16 +73,13 @@ fn de_attributes() {
|
||||
}
|
||||
}
|
||||
|
||||
let content = "<base item=\"something\"><sub subitem=\"sub-something\"></sub></base>".to_string();
|
||||
let mut parser = EventReader::from_str(content.as_str());
|
||||
|
||||
let loaded = XmlStruct::derive_deserialize(&mut parser, None);
|
||||
assert_eq!(loaded, Ok(XmlStruct{
|
||||
let content = "<base item=\"something\"><sub subitem=\"sub-something\"></sub></base>";
|
||||
convert_and_validate!(content, XmlStruct{
|
||||
item: "something".to_string(),
|
||||
sub: SubStruct{
|
||||
subitem: "sub-something".to_string()
|
||||
}
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -108,16 +108,13 @@ fn de_rename() {
|
||||
}
|
||||
}
|
||||
|
||||
let content = "<base Item=\"something\"><sub sub_item=\"sub_something\"></sub></base>".to_string();
|
||||
let mut parser = EventReader::from_str(content.as_str());
|
||||
|
||||
let loaded = XmlStruct::derive_deserialize(&mut parser, None);
|
||||
assert_eq!(loaded, Ok(XmlStruct{
|
||||
let content = "<base Item=\"something\"><sub sub_item=\"sub_something\"></sub></base>";
|
||||
convert_and_validate!(content, XmlStruct{
|
||||
item: "something".to_string(),
|
||||
sub_struct: SubStruct{
|
||||
subitem: "sub_something".to_string()
|
||||
}
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -149,15 +146,12 @@ fn de_text_content_with_attributes() {
|
||||
}
|
||||
}
|
||||
|
||||
let content = "<base Item=\"something\"><sub sub_item=\"sub_something\">text_content</sub></base>".to_string();
|
||||
let mut parser = EventReader::from_str(content.as_str());
|
||||
|
||||
let loaded = XmlStruct::derive_deserialize(&mut parser, None);
|
||||
assert_eq!(loaded, Ok(XmlStruct{
|
||||
let content = "<base Item=\"something\"><sub sub_item=\"sub_something\">text_content</sub></base>";
|
||||
convert_and_validate!(content, XmlStruct{
|
||||
item: "something".to_string(),
|
||||
sub_struct: SubStruct{
|
||||
subitem: "sub_something".to_string(),
|
||||
text: "text_content".to_string()
|
||||
}
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
@ -8,7 +8,21 @@ use std::str;
|
||||
use std::io::Cursor;
|
||||
use std::io::Write;
|
||||
use xml::writer::EventWriter;
|
||||
use yaserde::{YaSerialize};
|
||||
use yaserde::YaSerialize;
|
||||
|
||||
macro_rules! convert_and_validate {
|
||||
($model:expr, $content:expr) => {
|
||||
let mut buf = Cursor::new(Vec::new());
|
||||
let mut writer = EventWriter::new(&mut buf);
|
||||
let _status = $model.derive_serialize(&mut writer, None);
|
||||
|
||||
let buffer = writer.into_inner();
|
||||
let cursor = buffer.get_ref();
|
||||
|
||||
let data = str::from_utf8(cursor).expect("Found invalid UTF-8");
|
||||
assert_eq!(data, $content);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn ser_basic() {
|
||||
@ -23,16 +37,7 @@ fn ser_basic() {
|
||||
};
|
||||
|
||||
let content = "<?xml version=\"1.0\" encoding=\"utf-8\"?><base><item>something</item></base>".to_string();
|
||||
|
||||
let mut buf = Cursor::new(Vec::new());
|
||||
let mut writer = EventWriter::new(&mut buf);
|
||||
let _status = model.derive_serialize(&mut writer, None);
|
||||
|
||||
let buffer = writer.into_inner();
|
||||
let cursor = buffer.get_ref();
|
||||
|
||||
let data = str::from_utf8(cursor).expect("Found invalid UTF-8");
|
||||
assert_eq!(data, content);
|
||||
convert_and_validate!(model, content);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -51,15 +56,5 @@ fn ser_list_of_items() {
|
||||
};
|
||||
|
||||
let content = "<?xml version=\"1.0\" encoding=\"utf-8\"?><base><items>something1</items><items>something2</items></base>".to_string();
|
||||
|
||||
let mut buf = Cursor::new(Vec::new());
|
||||
let mut writer = EventWriter::new(&mut buf);
|
||||
let _status = model.derive_serialize(&mut writer, None);
|
||||
|
||||
let buffer = writer.into_inner();
|
||||
let cursor = buffer.get_ref();
|
||||
|
||||
let data = str::from_utf8(cursor).expect("Found invalid UTF-8");
|
||||
assert_eq!(data, content);
|
||||
|
||||
convert_and_validate!(model, content);
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user