Add test for attribute with skip_serialize_if
This commit is contained in:
		
							parent
							
								
									0139d63f6d
								
							
						
					
					
						commit
						cb25872cde
					
				| @ -62,3 +62,60 @@ fn skip_serializing_if_for_struct() { | ||||
|   let content = "<base />"; | ||||
|   serialize_and_validate!(model, content); | ||||
| } | ||||
| 
 | ||||
| #[test] | ||||
| fn skip_serializing_if_for_struct_attributes() { | ||||
|   init(); | ||||
| 
 | ||||
|   fn default_string_function() -> String { | ||||
|     "mask_default".to_string() | ||||
|   } | ||||
| 
 | ||||
|   #[derive(YaSerialize, PartialEq, Debug)] | ||||
|   #[yaserde(rename = "base")] | ||||
|   pub struct XmlStruct { | ||||
|     #[yaserde(
 | ||||
|       attribute, | ||||
|       skip_serializing_if = "check_string_function", | ||||
|       default = "default_string_function" | ||||
|     )] | ||||
|     string_with_default_item: String, | ||||
|     #[yaserde(attribute, skip_serializing_if = "check_string_function")] | ||||
|     string_item: String, | ||||
|     #[yaserde(attribute, skip_serializing_if = "check_bool_function")] | ||||
|     bool_item: bool, | ||||
|     #[yaserde(attribute, skip_serializing_if = "check_f32_function")] | ||||
|     f32_item: f32, | ||||
|     #[yaserde(attribute, skip_serializing_if = "check_option_string_function")] | ||||
|     option_string_item: Option<String>, | ||||
|   } | ||||
| 
 | ||||
|   impl XmlStruct { | ||||
|     fn check_string_function(&self, value: &str) -> bool { | ||||
|       value == "something" | ||||
|     } | ||||
| 
 | ||||
|     fn check_option_string_function(&self, value: &Option<String>) -> bool { | ||||
|       value == &Some("something".to_string()) | ||||
|     } | ||||
| 
 | ||||
|     fn check_bool_function(&self, value: &bool) -> bool { | ||||
|       value == &true | ||||
|     } | ||||
| 
 | ||||
|     fn check_f32_function(&self, value: &f32) -> bool { | ||||
|       (value - 0.0).abs() < std::f32::EPSILON | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   let model = XmlStruct { | ||||
|     string_with_default_item: "mask_default".to_string(), | ||||
|     string_item: "something".to_string(), | ||||
|     bool_item: true, | ||||
|     f32_item: 0.0, | ||||
|     option_string_item: Some("something".to_string()), | ||||
|   }; | ||||
| 
 | ||||
|   let content = "<base />"; | ||||
|   serialize_and_validate!(model, content); | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user