diff --git a/yaserde/tests/deserializer.rs b/yaserde/tests/deserializer.rs
index d22768e..53489f2 100644
--- a/yaserde/tests/deserializer.rs
+++ b/yaserde/tests/deserializer.rs
@@ -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 = "- something
".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 = "- something
";
+ convert_and_validate!(content, XmlStruct{
item: "something".to_string()
- }));
+ });
}
#[test]
@@ -33,16 +39,13 @@ fn de_list_of_items() {
items: Vec
}
- let content = "something1something2".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 = "something1something2";
+ convert_and_validate!(content, XmlStruct{
items: vec![
"something1".to_string(),
"something2".to_string()
]
- }));
+ });
}
#[test]
@@ -70,16 +73,13 @@ fn de_attributes() {
}
}
- let content = "".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 = "";
+ 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 = "".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 = "";
+ 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 = "text_content".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 = "text_content";
+ convert_and_validate!(content, XmlStruct{
item: "something".to_string(),
sub_struct: SubStruct{
subitem: "sub_something".to_string(),
text: "text_content".to_string()
}
- }));
+ });
}
diff --git a/yaserde/tests/serializer.rs b/yaserde/tests/serializer.rs
index 923f7a6..ad9cab1 100644
--- a/yaserde/tests/serializer.rs
+++ b/yaserde/tests/serializer.rs
@@ -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 = "- something
".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 = "something1something2".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);
}
\ No newline at end of file