Reuse type in newtype_variant_containing_externally_tagged_enum

This commit is contained in:
Mingun 2023-08-07 21:58:50 +05:00
parent 28a775db22
commit 41b9c33c2b

View File

@ -40,6 +40,7 @@ enum InternallyTagged {
NewtypeNewtype(Newtype), NewtypeNewtype(Newtype),
NewtypeMap(BTreeMap<String, String>), NewtypeMap(BTreeMap<String, String>),
NewtypeStruct(Struct), NewtypeStruct(Struct),
NewtypeEnum(Enum),
Struct { a: u8 }, Struct { a: u8 },
} }
@ -182,6 +183,7 @@ fn wrong_tag() {
`NewtypeNewtype`, \ `NewtypeNewtype`, \
`NewtypeMap`, \ `NewtypeMap`, \
`NewtypeStruct`, \ `NewtypeStruct`, \
`NewtypeEnum`, \
`Struct`", `Struct`",
); );
} }
@ -545,18 +547,12 @@ fn borrow() {
#[test] #[test]
fn newtype_variant_containing_externally_tagged_enum() { fn newtype_variant_containing_externally_tagged_enum() {
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(tag = "tag")]
enum Outer {
Inner(Enum),
}
assert_tokens( assert_tokens(
&Outer::Inner(Enum::Unit), &InternallyTagged::NewtypeEnum(Enum::Unit),
&[ &[
Token::Map { len: Some(2) }, Token::Map { len: Some(2) },
Token::Str("tag"), Token::Str("tag"),
Token::Str("Inner"), Token::Str("NewtypeEnum"),
Token::Str("Unit"), Token::Str("Unit"),
Token::Unit, Token::Unit,
Token::MapEnd, Token::MapEnd,
@ -564,11 +560,11 @@ fn newtype_variant_containing_externally_tagged_enum() {
); );
assert_tokens( assert_tokens(
&Outer::Inner(Enum::Newtype(1)), &InternallyTagged::NewtypeEnum(Enum::Newtype(1)),
&[ &[
Token::Map { len: Some(2) }, Token::Map { len: Some(2) },
Token::Str("tag"), Token::Str("tag"),
Token::Str("Inner"), Token::Str("NewtypeEnum"),
Token::Str("Newtype"), Token::Str("Newtype"),
Token::U8(1), Token::U8(1),
Token::MapEnd, Token::MapEnd,
@ -579,11 +575,11 @@ fn newtype_variant_containing_externally_tagged_enum() {
// Content::Seq case // Content::Seq case
// via ContentDeserializer::deserialize_enum // via ContentDeserializer::deserialize_enum
assert_tokens( assert_tokens(
&Outer::Inner(Enum::Tuple(1, 1)), &InternallyTagged::NewtypeEnum(Enum::Tuple(1, 1)),
&[ &[
Token::Map { len: Some(2) }, Token::Map { len: Some(2) },
Token::Str("tag"), Token::Str("tag"),
Token::Str("Inner"), Token::Str("NewtypeEnum"),
Token::Str("Tuple"), Token::Str("Tuple"),
Token::TupleStruct { Token::TupleStruct {
name: "Tuple", name: "Tuple",
@ -600,11 +596,11 @@ fn newtype_variant_containing_externally_tagged_enum() {
// Content::Map case // Content::Map case
// via ContentDeserializer::deserialize_enum // via ContentDeserializer::deserialize_enum
assert_tokens( assert_tokens(
&Outer::Inner(Enum::Struct { f: 1 }), &InternallyTagged::NewtypeEnum(Enum::Struct { f: 1 }),
&[ &[
Token::Map { len: Some(2) }, Token::Map { len: Some(2) },
Token::Str("tag"), Token::Str("tag"),
Token::Str("Inner"), Token::Str("NewtypeEnum"),
Token::Str("Struct"), Token::Str("Struct"),
Token::Struct { Token::Struct {
name: "Struct", name: "Struct",
@ -621,11 +617,11 @@ fn newtype_variant_containing_externally_tagged_enum() {
// Content::Seq case // Content::Seq case
// via ContentDeserializer::deserialize_enum // via ContentDeserializer::deserialize_enum
assert_de_tokens( assert_de_tokens(
&Outer::Inner(Enum::Struct { f: 1 }), &InternallyTagged::NewtypeEnum(Enum::Struct { f: 1 }),
&[ &[
Token::Map { len: Some(2) }, Token::Map { len: Some(2) },
Token::Str("tag"), Token::Str("tag"),
Token::Str("Inner"), Token::Str("NewtypeEnum"),
Token::Str("Struct"), Token::Str("Struct"),
Token::Seq { len: Some(1) }, Token::Seq { len: Some(1) },
Token::U8(1), // f Token::U8(1), // f