From 37e26b29d1a6ccb812aacaac84ef59f800522cab Mon Sep 17 00:00:00 2001 From: Marc-Antoine Arnaud Date: Thu, 6 Dec 2018 00:22:57 +0100 Subject: [PATCH] add unit tests issue #9 --- yaserde/tests/der_default.rs | 89 ++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 yaserde/tests/der_default.rs diff --git a/yaserde/tests/der_default.rs b/yaserde/tests/der_default.rs new file mode 100644 index 0000000..dc34a04 --- /dev/null +++ b/yaserde/tests/der_default.rs @@ -0,0 +1,89 @@ +#[macro_use] +extern crate log; +extern crate xml; +extern crate yaserde; +#[macro_use] +extern crate yaserde_derive; + +use std::io::Read; +use yaserde::de::from_str; +use yaserde::YaDeserialize; + +macro_rules! convert_and_validate { + ($content: expr, $struct: tt, $model: expr) => { + let loaded: Result<$struct, String> = from_str($content); + assert_eq!(loaded, Ok($model)); + }; +} + +#[test] +fn de_default_field_string() { + fn default_string() -> String { + "my_default_value".to_string() + } + + #[derive(YaDeserialize, PartialEq, Debug)] + #[yaserde(root = "base")] + pub struct XmlStruct { + #[yaserde(default = "default_string")] + background: String, + } + + let content = + ""; + convert_and_validate!( + content, + XmlStruct, + XmlStruct { + background: "my_default_value".to_string(), + } + ); +} + +#[test] +fn de_default_field_boolean() { + fn default_boolean() -> bool { + true + } + + #[derive(YaDeserialize, PartialEq, Debug)] + #[yaserde(root = "base")] + pub struct XmlStruct { + #[yaserde(default = "default_boolean")] + background: bool, + } + + let content = + ""; + convert_and_validate!( + content, + XmlStruct, + XmlStruct { + background: true, + } + ); +} + +#[test] +fn de_default_field_number() { + fn default_number() -> u8 { + 6 + } + + #[derive(YaDeserialize, PartialEq, Debug)] + #[yaserde(root = "base")] + pub struct XmlStruct { + #[yaserde(default = "default_number")] + background: u8, + } + + let content = + ""; + convert_and_validate!( + content, + XmlStruct, + XmlStruct { + background: 6, + } + ); +}