mirror of
https://github.com/serde-rs/serde.git
synced 2025-10-02 15:25:38 +00:00
Reuse type in newtype_variant_containing_externally_tagged_enum
This commit is contained in:
parent
28a775db22
commit
41b9c33c2b
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user