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