diff --git a/yaserde/tests/enum.rs b/yaserde/tests/enum.rs
index b0822cd..3c0a300 100644
--- a/yaserde/tests/enum.rs
+++ b/yaserde/tests/enum.rs
@@ -149,45 +149,81 @@ fn attribute_enum() {
#[test]
fn attribute_enum2() {
- #[derive(YaSerialize)]
+ #[derive(Debug, PartialEq, YaSerialize, YaDeserialize)]
#[yaserde(rename = "child1")]
struct Child1 {
#[yaserde(attribute, rename = "val")]
pub val: String,
}
- #[derive(YaSerialize)]
+ impl Default for Child1 {
+ fn default() -> Child1 {
+ Child1{val: "hello world".into()}
+ }
+ }
+
+ #[derive(Debug, PartialEq, YaSerialize, YaDeserialize)]
#[yaserde(rename = "child2")]
struct Child2 {
#[yaserde(attribute)]
pub num: u8,
}
- #[derive(YaSerialize)]
+ impl Default for Child2 {
+ fn default() -> Child2 {
+ Child2{num: 0}
+ }
+ }
+
+ #[derive(Debug, PartialEq, YaSerialize, YaDeserialize)]
#[yaserde(flatten)]
enum Base {
- #[yaserde(flatten)]
+ #[yaserde(flatten, rename="child1")]
C1(Child1),
+ #[yaserde(flatten, rename="child2")]
+ C2(Child2),
+ }
+
+ impl Default for Base {
+ fn default() -> Base {
+ Base::C1(Child1{val: "hello world".into()})
+ }
}
let content = r#""#;
let model = Base::C1(Child1 {
val: "hello world".into(),
});
- serialize_and_validate!(model, content);
- #[derive(YaSerialize)]
+ serialize_and_validate!(model, content);
+ deserialize_and_validate!(content, model, Base);
+
+ let content = r#""#;
+ let model = Base::C2(Child2{ num: 7 });
+
+ serialize_and_validate!(model, content);
+ deserialize_and_validate!(content, model, Base);
+
+ #[derive(Debug, PartialEq, YaSerialize, YaDeserialize)]
#[yaserde(rename = "base")]
enum Base2 {
#[yaserde(flatten)]
C1(Child1),
}
+ impl Default for Base2 {
+ fn default() -> Base2 {
+ Base2::C1(Child1{val: "hello world".into()})
+ }
+ }
+
let content = r#""#;
let model = Base2::C1(Child1 {
val: "hello world".into(),
});
serialize_and_validate!(model, content);
+ println!("{:?}", yaserde::de::from_str::(content));
+ deserialize_and_validate!(content, model, Base2);
}
#[test]