Reuse type in newtype_variant_containing_unit_struct

This commit is contained in:
Mingun
2023-08-07 21:53:32 +05:00
parent 48de0c51b0
commit d3492d8d36
+10 -12
View File
@@ -28,6 +28,7 @@ struct Struct {
enum InternallyTagged { enum InternallyTagged {
Unit, Unit,
NewtypeUnit(()), NewtypeUnit(()),
NewtypeUnitStruct(Unit),
NewtypeNewtype(Newtype), NewtypeNewtype(Newtype),
NewtypeMap(BTreeMap<String, String>), NewtypeMap(BTreeMap<String, String>),
NewtypeStruct(Struct), NewtypeStruct(Struct),
@@ -169,6 +170,7 @@ fn wrong_tag() {
"unknown variant `Z`, expected one of \ "unknown variant `Z`, expected one of \
`Unit`, \ `Unit`, \
`NewtypeUnit`, \ `NewtypeUnit`, \
`NewtypeUnitStruct`, \
`NewtypeNewtype`, \ `NewtypeNewtype`, \
`NewtypeMap`, \ `NewtypeMap`, \
`NewtypeStruct`, \ `NewtypeStruct`, \
@@ -638,40 +640,36 @@ fn newtype_variant_containing_externally_tagged_enum() {
#[test] #[test]
fn newtype_variant_containing_unit_struct() { fn newtype_variant_containing_unit_struct() {
#[derive(Debug, PartialEq, Serialize, Deserialize)] let value = InternallyTagged::NewtypeUnitStruct(Unit);
#[serde(tag = "tag")]
enum Message {
Info(Unit),
}
assert_tokens( assert_tokens(
&Message::Info(Unit), &value,
&[ &[
Token::Map { len: Some(1) }, Token::Map { len: Some(1) },
Token::Str("tag"), Token::Str("tag"),
Token::Str("Info"), Token::Str("NewtypeUnitStruct"),
Token::MapEnd, Token::MapEnd,
], ],
); );
assert_de_tokens( assert_de_tokens(
&Message::Info(Unit), &value,
&[ &[
Token::Struct { Token::Struct {
name: "Message", name: "InternallyTagged",
len: 1, len: 1,
}, },
Token::Str("tag"), Token::Str("tag"),
Token::Str("Info"), Token::Str("NewtypeUnitStruct"),
Token::StructEnd, Token::StructEnd,
], ],
); );
assert_de_tokens( assert_de_tokens(
&Message::Info(Unit), &value,
&[ &[
Token::Seq { len: Some(1) }, Token::Seq { len: Some(1) },
Token::Str("Info"), Token::Str("NewtypeUnitStruct"), // tag
Token::SeqEnd, Token::SeqEnd,
], ],
); );