diff --git a/yaserde/tests/skip.rs b/yaserde/tests/skip.rs
index db40266..b9879ff 100644
--- a/yaserde/tests/skip.rs
+++ b/yaserde/tests/skip.rs
@@ -25,3 +25,72 @@ fn skip_serializing() {
let content = "";
serialize_and_validate!(model, content);
}
+
+#[test]
+fn skip_serializing_for_nested_struct() {
+ init();
+
+ #[derive(YaSerialize, PartialEq, Debug)]
+ #[yaserde(rename = "base")]
+ pub struct XmlStruct {
+ #[yaserde(skip_serializing)]
+ skipped_serializing: XmlStructChild,
+ }
+
+ #[derive(YaSerialize, PartialEq, Debug)]
+ #[yaserde(rename = "child")]
+ pub struct XmlStructChild {
+ }
+
+ let model = XmlStruct {
+ skipped_serializing: XmlStructChild{},
+ };
+
+ let content = "";
+ serialize_and_validate!(model, content);
+}
+
+#[test]
+fn skip_serializing_for_enum() {
+ init();
+
+ #[derive(YaSerialize, PartialEq, Debug)]
+ #[yaserde(rename = "base")]
+ pub struct XmlStruct {
+ #[yaserde(skip_serializing)]
+ skipped_serializing: XmlEnum,
+ }
+
+ #[derive(YaSerialize, PartialEq, Debug)]
+ #[yaserde(rename = "child")]
+ pub enum XmlEnum {
+ Ok
+ }
+
+ let model = XmlStruct {
+ skipped_serializing: XmlEnum::Ok,
+ };
+
+ let content = "";
+ serialize_and_validate!(model, content);
+}
+
+#[test]
+fn skip_serializing_for_vec() {
+ init();
+
+ #[derive(YaSerialize, PartialEq, Debug)]
+ #[yaserde(rename = "base")]
+ pub struct XmlStruct {
+ #[yaserde(skip_serializing)]
+ skipped_serializing: Vec,
+ }
+
+ let model = XmlStruct {
+ skipped_serializing: vec![1,2,3],
+ };
+
+ let content = "";
+ serialize_and_validate!(model, content);
+}
+
diff --git a/yaserde/tests/skip_if.rs b/yaserde/tests/skip_if.rs
index 6bb7910..14d5076 100644
--- a/yaserde/tests/skip_if.rs
+++ b/yaserde/tests/skip_if.rs
@@ -119,3 +119,89 @@ fn skip_serializing_if_for_struct_attributes() {
let content = "";
serialize_and_validate!(model, content);
}
+
+#[test]
+fn skip_serializing_if_for_nested_struct() {
+ init();
+
+ #[derive(YaSerialize, PartialEq, Debug)]
+ #[yaserde(rename = "base")]
+ pub struct XmlStruct {
+ #[yaserde(skip_serializing_if="check_child")]
+ skipped_serializing: XmlStructChild,
+ }
+ impl XmlStruct
+ {
+ fn check_child(&self, _child:&XmlStructChild)->bool
+ {
+ true
+ }
+ }
+ #[derive(YaSerialize, PartialEq, Debug)]
+ #[yaserde(rename = "child")]
+ pub struct XmlStructChild {
+ }
+
+ let model = XmlStruct {
+ skipped_serializing: XmlStructChild{},
+ };
+
+ let content = "";
+ serialize_and_validate!(model, content);
+}
+
+#[test]
+fn skip_serializing_if_for_enum() {
+ init();
+
+ #[derive(YaSerialize, PartialEq, Debug)]
+ #[yaserde(rename = "base")]
+ pub struct XmlStruct {
+ #[yaserde(skip_serializing_if="check_enum")]
+ skipped_serializing: XmlEnum,
+ }
+ impl XmlStruct
+ {
+ fn check_enum(&self, _child:&XmlEnum)->bool
+ {
+ true
+ }
+ }
+ #[derive(YaSerialize, PartialEq, Debug)]
+ #[yaserde(rename = "child")]
+ pub enum XmlEnum {
+ Ok
+ }
+
+ let model = XmlStruct {
+ skipped_serializing: XmlEnum::Ok,
+ };
+
+ let content = "";
+ serialize_and_validate!(model, content);
+}
+
+#[test]
+fn skip_serializing_if_for_vec() {
+ init();
+
+ #[derive(YaSerialize, PartialEq, Debug)]
+ #[yaserde(rename = "base")]
+ pub struct XmlStruct {
+ #[yaserde(skip_serializing_if="check_vec")]
+ skipped_serializing: Vec,
+ }
+ impl XmlStruct
+ {
+ fn check_vec(&self, _child:&Vec)->bool
+ {
+ true
+ }
+ }
+ let model = XmlStruct {
+ skipped_serializing: vec![1,2,3],
+ };
+
+ let content = "";
+ serialize_and_validate!(model, content);
+}
\ No newline at end of file