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