Added support for newtype variant serialization

This commit is contained in:
Armin Ronacher
2018-03-18 13:10:54 +01:00
parent ebc61baab2
commit f1af2dc5ab
2 changed files with 54 additions and 2 deletions
+52
View File
@@ -140,6 +140,12 @@ enum FlattenStructTagContentEnum {
index: u32,
value: u32
},
NewtypeVariant(FlattenStructTagContentEnumNewtypeVariant),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
struct FlattenStructTagContentEnumNewtypeVariant {
value: u32,
}
#[test]
@@ -1441,3 +1447,49 @@ fn test_flatten_struct_tag_content_enum() {
],
);
}
#[test]
fn test_flatten_struct_tag_content_enum_newtype() {
let change_request = FlattenStructTagContentEnumWrapper {
outer: 42,
data: FlattenStructTagContentEnumNewtype(
FlattenStructTagContentEnum::NewtypeVariant(
FlattenStructTagContentEnumNewtypeVariant {
value: 23
}
)
),
};
assert_de_tokens(
&change_request,
&[
Token::Map { len: None },
Token::Str("outer"),
Token::U32(42),
Token::Str("type"),
Token::Str("newtype_variant"),
Token::Str("value"),
Token::Map { len: None },
Token::Str("value"),
Token::U32(23),
Token::MapEnd,
Token::MapEnd,
],
);
assert_ser_tokens(
&change_request,
&[
Token::Map { len: None },
Token::Str("outer"),
Token::U32(42),
Token::Str("type"),
Token::Str("newtype_variant"),
Token::Str("value"),
Token::Struct { len: 1, name: "FlattenStructTagContentEnumNewtypeVariant" },
Token::Str("value"),
Token::U32(23),
Token::StructEnd,
Token::MapEnd,
],
);
}