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 std::io::Read; | ||||||
| use xml::reader::EventReader; | 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] | #[test] | ||||||
| fn de_basic() { | fn de_basic() { | ||||||
| @ -16,13 +25,10 @@ fn de_basic() { | |||||||
|     item: String |     item: String | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   let content = "<base><item>something</item></base>".to_string(); |   let content = "<base><item>something</item></base>"; | ||||||
|   let mut parser = EventReader::from_str(content.as_str()); |   convert_and_validate!(content, XmlStruct{ | ||||||
| 
 |  | ||||||
|   let loaded = XmlStruct::derive_deserialize(&mut parser, None); |  | ||||||
|   assert_eq!(loaded, Ok(XmlStruct{ |  | ||||||
|     item: "something".to_string() |     item: "something".to_string() | ||||||
|   })); |   }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[test] | #[test] | ||||||
| @ -33,16 +39,13 @@ fn de_list_of_items() { | |||||||
|     items: Vec<String> |     items: Vec<String> | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   let content = "<base><items>something1</items><items>something2</items></base>".to_string(); |   let content = "<base><items>something1</items><items>something2</items></base>"; | ||||||
|   let mut parser = EventReader::from_str(content.as_str()); |   convert_and_validate!(content, XmlStruct{ | ||||||
| 
 |  | ||||||
|   let loaded = XmlStruct::derive_deserialize(&mut parser, None); |  | ||||||
|   assert_eq!(loaded, Ok(XmlStruct{ |  | ||||||
|     items: vec![ |     items: vec![ | ||||||
|       "something1".to_string(), |       "something1".to_string(), | ||||||
|       "something2".to_string() |       "something2".to_string() | ||||||
|     ] |     ] | ||||||
|   })); |   }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[test] | #[test] | ||||||
| @ -70,16 +73,13 @@ fn de_attributes() { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   let content = "<base item=\"something\"><sub subitem=\"sub-something\"></sub></base>".to_string(); |   let content = "<base item=\"something\"><sub subitem=\"sub-something\"></sub></base>"; | ||||||
|   let mut parser = EventReader::from_str(content.as_str()); |   convert_and_validate!(content, XmlStruct{ | ||||||
| 
 |  | ||||||
|   let loaded = XmlStruct::derive_deserialize(&mut parser, None); |  | ||||||
|   assert_eq!(loaded, Ok(XmlStruct{ |  | ||||||
|     item: "something".to_string(), |     item: "something".to_string(), | ||||||
|     sub: SubStruct{ |     sub: SubStruct{ | ||||||
|       subitem: "sub-something".to_string() |       subitem: "sub-something".to_string() | ||||||
|     } |     } | ||||||
|   })); |   }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[test] | #[test] | ||||||
| @ -108,16 +108,13 @@ fn de_rename() { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   let content = "<base Item=\"something\"><sub sub_item=\"sub_something\"></sub></base>".to_string(); |   let content = "<base Item=\"something\"><sub sub_item=\"sub_something\"></sub></base>"; | ||||||
|   let mut parser = EventReader::from_str(content.as_str()); |   convert_and_validate!(content, XmlStruct{ | ||||||
| 
 |  | ||||||
|   let loaded = XmlStruct::derive_deserialize(&mut parser, None); |  | ||||||
|   assert_eq!(loaded, Ok(XmlStruct{ |  | ||||||
|     item: "something".to_string(), |     item: "something".to_string(), | ||||||
|     sub_struct: SubStruct{ |     sub_struct: SubStruct{ | ||||||
|       subitem: "sub_something".to_string() |       subitem: "sub_something".to_string() | ||||||
|     } |     } | ||||||
|   })); |   }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[test] | #[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 content = "<base Item=\"something\"><sub sub_item=\"sub_something\">text_content</sub></base>"; | ||||||
|   let mut parser = EventReader::from_str(content.as_str()); |   convert_and_validate!(content, XmlStruct{ | ||||||
| 
 |  | ||||||
|   let loaded = XmlStruct::derive_deserialize(&mut parser, None); |  | ||||||
|   assert_eq!(loaded, Ok(XmlStruct{ |  | ||||||
|     item: "something".to_string(), |     item: "something".to_string(), | ||||||
|     sub_struct: SubStruct{ |     sub_struct: SubStruct{ | ||||||
|       subitem: "sub_something".to_string(), |       subitem: "sub_something".to_string(), | ||||||
|       text: "text_content".to_string() |       text: "text_content".to_string() | ||||||
|     } |     } | ||||||
|   })); |   }); | ||||||
| } | } | ||||||
|  | |||||||
| @ -8,7 +8,21 @@ use std::str; | |||||||
| use std::io::Cursor; | use std::io::Cursor; | ||||||
| use std::io::Write; | use std::io::Write; | ||||||
| use xml::writer::EventWriter; | 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] | #[test] | ||||||
| fn ser_basic() { | 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 content = "<?xml version=\"1.0\" encoding=\"utf-8\"?><base><item>something</item></base>".to_string(); | ||||||
| 
 |   convert_and_validate!(model, content); | ||||||
|   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] | #[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 content = "<?xml version=\"1.0\" encoding=\"utf-8\"?><base><items>something1</items><items>something2</items></base>".to_string(); | ||||||
| 
 |   convert_and_validate!(model, content); | ||||||
|   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); |  | ||||||
| 
 |  | ||||||
| } | } | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user