Add tests with borrowed strings for the tag field name and tag value
This commit is contained in:
parent
4987fd15f7
commit
47954502af
@ -59,12 +59,32 @@ fn unit() {
|
|||||||
Token::StructEnd,
|
Token::StructEnd,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
assert_de_tokens(
|
||||||
|
&InternallyTagged::Unit,
|
||||||
|
&[
|
||||||
|
Token::Struct {
|
||||||
|
name: "InternallyTagged",
|
||||||
|
len: 1,
|
||||||
|
},
|
||||||
|
Token::BorrowedStr("tag"),
|
||||||
|
Token::BorrowedStr("Unit"),
|
||||||
|
Token::StructEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
assert_de_tokens(
|
assert_de_tokens(
|
||||||
&InternallyTagged::Unit,
|
&InternallyTagged::Unit,
|
||||||
&[
|
&[
|
||||||
Token::Seq { len: Some(1) },
|
Token::Seq { len: Some(1) },
|
||||||
Token::Str("Unit"),
|
Token::Str("Unit"), // tag
|
||||||
|
Token::SeqEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
assert_de_tokens(
|
||||||
|
&InternallyTagged::Unit,
|
||||||
|
&[
|
||||||
|
Token::Seq { len: Some(1) },
|
||||||
|
Token::BorrowedStr("Unit"), // tag
|
||||||
Token::SeqEnd,
|
Token::SeqEnd,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@ -83,6 +103,15 @@ fn newtype_unit() {
|
|||||||
Token::MapEnd,
|
Token::MapEnd,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
assert_de_tokens(
|
||||||
|
&value,
|
||||||
|
&[
|
||||||
|
Token::Map { len: Some(1) },
|
||||||
|
Token::BorrowedStr("tag"),
|
||||||
|
Token::BorrowedStr("NewtypeUnit"),
|
||||||
|
Token::MapEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -98,6 +127,15 @@ fn newtype_unit_struct() {
|
|||||||
Token::MapEnd,
|
Token::MapEnd,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
assert_de_tokens(
|
||||||
|
&value,
|
||||||
|
&[
|
||||||
|
Token::Map { len: Some(1) },
|
||||||
|
Token::BorrowedStr("tag"),
|
||||||
|
Token::BorrowedStr("NewtypeUnitStruct"),
|
||||||
|
Token::MapEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
assert_de_tokens(
|
assert_de_tokens(
|
||||||
&value,
|
&value,
|
||||||
@ -111,6 +149,18 @@ fn newtype_unit_struct() {
|
|||||||
Token::StructEnd,
|
Token::StructEnd,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
assert_de_tokens(
|
||||||
|
&value,
|
||||||
|
&[
|
||||||
|
Token::Struct {
|
||||||
|
name: "InternallyTagged",
|
||||||
|
len: 1,
|
||||||
|
},
|
||||||
|
Token::BorrowedStr("tag"),
|
||||||
|
Token::BorrowedStr("NewtypeUnitStruct"),
|
||||||
|
Token::StructEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
assert_de_tokens(
|
assert_de_tokens(
|
||||||
&value,
|
&value,
|
||||||
@ -120,6 +170,14 @@ fn newtype_unit_struct() {
|
|||||||
Token::SeqEnd,
|
Token::SeqEnd,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
assert_de_tokens(
|
||||||
|
&value,
|
||||||
|
&[
|
||||||
|
Token::Seq { len: Some(1) },
|
||||||
|
Token::BorrowedStr("NewtypeUnitStruct"), // tag
|
||||||
|
Token::SeqEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@ -137,8 +195,10 @@ fn newtype_newtype() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn newtype_map() {
|
fn newtype_map() {
|
||||||
|
let value = InternallyTagged::NewtypeMap(BTreeMap::new());
|
||||||
|
|
||||||
assert_tokens(
|
assert_tokens(
|
||||||
&InternallyTagged::NewtypeMap(BTreeMap::new()),
|
&value,
|
||||||
&[
|
&[
|
||||||
Token::Map { len: Some(1) },
|
Token::Map { len: Some(1) },
|
||||||
Token::Str("tag"),
|
Token::Str("tag"),
|
||||||
@ -146,11 +206,20 @@ fn newtype_map() {
|
|||||||
Token::MapEnd,
|
Token::MapEnd,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
assert_de_tokens(
|
||||||
|
&value,
|
||||||
|
&[
|
||||||
|
Token::Map { len: Some(1) },
|
||||||
|
Token::BorrowedStr("tag"),
|
||||||
|
Token::BorrowedStr("NewtypeMap"),
|
||||||
|
Token::MapEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
assert_de_tokens_error::<InternallyTagged>(
|
assert_de_tokens_error::<InternallyTagged>(
|
||||||
&[
|
&[
|
||||||
Token::Seq { len: Some(2) },
|
Token::Seq { len: Some(2) },
|
||||||
Token::Str("NewtypeMap"),
|
Token::Str("NewtypeMap"), // tag
|
||||||
Token::Map { len: Some(0) },
|
Token::Map { len: Some(0) },
|
||||||
Token::MapEnd,
|
Token::MapEnd,
|
||||||
Token::SeqEnd,
|
Token::SeqEnd,
|
||||||
@ -161,8 +230,10 @@ fn newtype_map() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn newtype_struct() {
|
fn newtype_struct() {
|
||||||
|
let value = InternallyTagged::NewtypeStruct(Struct { f: 6 });
|
||||||
|
|
||||||
assert_tokens(
|
assert_tokens(
|
||||||
&InternallyTagged::NewtypeStruct(Struct { f: 6 }),
|
&value,
|
||||||
&[
|
&[
|
||||||
Token::Struct {
|
Token::Struct {
|
||||||
name: "Struct",
|
name: "Struct",
|
||||||
@ -175,12 +246,35 @@ fn newtype_struct() {
|
|||||||
Token::StructEnd,
|
Token::StructEnd,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
assert_de_tokens(
|
||||||
|
&value,
|
||||||
|
&[
|
||||||
|
Token::Struct {
|
||||||
|
name: "Struct",
|
||||||
|
len: 2,
|
||||||
|
},
|
||||||
|
Token::BorrowedStr("tag"),
|
||||||
|
Token::BorrowedStr("NewtypeStruct"),
|
||||||
|
Token::BorrowedStr("f"),
|
||||||
|
Token::U8(6),
|
||||||
|
Token::StructEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
assert_de_tokens(
|
assert_de_tokens(
|
||||||
&InternallyTagged::NewtypeStruct(Struct { f: 6 }),
|
&value,
|
||||||
&[
|
&[
|
||||||
Token::Seq { len: Some(2) },
|
Token::Seq { len: Some(2) },
|
||||||
Token::Str("NewtypeStruct"),
|
Token::Str("NewtypeStruct"), // tag
|
||||||
|
Token::U8(6),
|
||||||
|
Token::SeqEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
assert_de_tokens(
|
||||||
|
&value,
|
||||||
|
&[
|
||||||
|
Token::Seq { len: Some(2) },
|
||||||
|
Token::BorrowedStr("NewtypeStruct"), // tag
|
||||||
Token::U8(6),
|
Token::U8(6),
|
||||||
Token::SeqEnd,
|
Token::SeqEnd,
|
||||||
],
|
],
|
||||||
@ -192,8 +286,10 @@ mod newtype_enum {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn unit() {
|
fn unit() {
|
||||||
|
let value = InternallyTagged::NewtypeEnum(Enum::Unit);
|
||||||
|
|
||||||
assert_tokens(
|
assert_tokens(
|
||||||
&InternallyTagged::NewtypeEnum(Enum::Unit),
|
&value,
|
||||||
&[
|
&[
|
||||||
Token::Map { len: Some(2) },
|
Token::Map { len: Some(2) },
|
||||||
Token::Str("tag"),
|
Token::Str("tag"),
|
||||||
@ -203,12 +299,25 @@ mod newtype_enum {
|
|||||||
Token::MapEnd,
|
Token::MapEnd,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
assert_de_tokens(
|
||||||
|
&value,
|
||||||
|
&[
|
||||||
|
Token::Map { len: Some(2) },
|
||||||
|
Token::BorrowedStr("tag"),
|
||||||
|
Token::BorrowedStr("NewtypeEnum"),
|
||||||
|
Token::BorrowedStr("Unit"),
|
||||||
|
Token::Unit,
|
||||||
|
Token::MapEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn newtype() {
|
fn newtype() {
|
||||||
|
let value = InternallyTagged::NewtypeEnum(Enum::Newtype(1));
|
||||||
|
|
||||||
assert_tokens(
|
assert_tokens(
|
||||||
&InternallyTagged::NewtypeEnum(Enum::Newtype(1)),
|
&value,
|
||||||
&[
|
&[
|
||||||
Token::Map { len: Some(2) },
|
Token::Map { len: Some(2) },
|
||||||
Token::Str("tag"),
|
Token::Str("tag"),
|
||||||
@ -218,15 +327,28 @@ mod newtype_enum {
|
|||||||
Token::MapEnd,
|
Token::MapEnd,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
assert_de_tokens(
|
||||||
|
&value,
|
||||||
|
&[
|
||||||
|
Token::Map { len: Some(2) },
|
||||||
|
Token::BorrowedStr("tag"),
|
||||||
|
Token::BorrowedStr("NewtypeEnum"),
|
||||||
|
Token::BorrowedStr("Newtype"),
|
||||||
|
Token::U8(1),
|
||||||
|
Token::MapEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn tuple() {
|
fn tuple() {
|
||||||
|
let value = InternallyTagged::NewtypeEnum(Enum::Tuple(1, 1));
|
||||||
|
|
||||||
// Reaches crate::private::de::content::VariantDeserializer::tuple_variant
|
// Reaches crate::private::de::content::VariantDeserializer::tuple_variant
|
||||||
// Content::Seq case
|
// Content::Seq case
|
||||||
// via ContentDeserializer::deserialize_enum
|
// via ContentDeserializer::deserialize_enum
|
||||||
assert_tokens(
|
assert_tokens(
|
||||||
&InternallyTagged::NewtypeEnum(Enum::Tuple(1, 1)),
|
&value,
|
||||||
&[
|
&[
|
||||||
Token::Map { len: Some(2) },
|
Token::Map { len: Some(2) },
|
||||||
Token::Str("tag"),
|
Token::Str("tag"),
|
||||||
@ -242,15 +364,34 @@ mod newtype_enum {
|
|||||||
Token::MapEnd,
|
Token::MapEnd,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
assert_de_tokens(
|
||||||
|
&value,
|
||||||
|
&[
|
||||||
|
Token::Map { len: Some(2) },
|
||||||
|
Token::BorrowedStr("tag"),
|
||||||
|
Token::BorrowedStr("NewtypeEnum"),
|
||||||
|
Token::BorrowedStr("Tuple"),
|
||||||
|
Token::TupleStruct {
|
||||||
|
name: "Tuple",
|
||||||
|
len: 2,
|
||||||
|
},
|
||||||
|
Token::U8(1),
|
||||||
|
Token::U8(1),
|
||||||
|
Token::TupleStructEnd,
|
||||||
|
Token::MapEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn struct_() {
|
fn struct_() {
|
||||||
|
let value = InternallyTagged::NewtypeEnum(Enum::Struct { f: 1 });
|
||||||
|
|
||||||
// Reaches crate::private::de::content::VariantDeserializer::struct_variant
|
// Reaches crate::private::de::content::VariantDeserializer::struct_variant
|
||||||
// Content::Map case
|
// Content::Map case
|
||||||
// via ContentDeserializer::deserialize_enum
|
// via ContentDeserializer::deserialize_enum
|
||||||
assert_tokens(
|
assert_tokens(
|
||||||
&InternallyTagged::NewtypeEnum(Enum::Struct { f: 1 }),
|
&value,
|
||||||
&[
|
&[
|
||||||
Token::Map { len: Some(2) },
|
Token::Map { len: Some(2) },
|
||||||
Token::Str("tag"),
|
Token::Str("tag"),
|
||||||
@ -266,12 +407,29 @@ mod newtype_enum {
|
|||||||
Token::MapEnd,
|
Token::MapEnd,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
assert_de_tokens(
|
||||||
|
&value,
|
||||||
|
&[
|
||||||
|
Token::Map { len: Some(2) },
|
||||||
|
Token::BorrowedStr("tag"),
|
||||||
|
Token::BorrowedStr("NewtypeEnum"),
|
||||||
|
Token::BorrowedStr("Struct"),
|
||||||
|
Token::Struct {
|
||||||
|
name: "Struct",
|
||||||
|
len: 1,
|
||||||
|
},
|
||||||
|
Token::BorrowedStr("f"),
|
||||||
|
Token::U8(1),
|
||||||
|
Token::StructEnd,
|
||||||
|
Token::MapEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
// Reaches crate::private::de::content::VariantDeserializer::struct_variant
|
// Reaches crate::private::de::content::VariantDeserializer::struct_variant
|
||||||
// Content::Seq case
|
// Content::Seq case
|
||||||
// via ContentDeserializer::deserialize_enum
|
// via ContentDeserializer::deserialize_enum
|
||||||
assert_de_tokens(
|
assert_de_tokens(
|
||||||
&InternallyTagged::NewtypeEnum(Enum::Struct { f: 1 }),
|
&value,
|
||||||
&[
|
&[
|
||||||
Token::Map { len: Some(2) },
|
Token::Map { len: Some(2) },
|
||||||
Token::Str("tag"),
|
Token::Str("tag"),
|
||||||
@ -283,13 +441,28 @@ mod newtype_enum {
|
|||||||
Token::MapEnd,
|
Token::MapEnd,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
assert_de_tokens(
|
||||||
|
&value,
|
||||||
|
&[
|
||||||
|
Token::Map { len: Some(2) },
|
||||||
|
Token::BorrowedStr("tag"),
|
||||||
|
Token::BorrowedStr("NewtypeEnum"),
|
||||||
|
Token::BorrowedStr("Struct"),
|
||||||
|
Token::Seq { len: Some(1) },
|
||||||
|
Token::U8(1), // f
|
||||||
|
Token::SeqEnd,
|
||||||
|
Token::MapEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn struct_() {
|
fn struct_() {
|
||||||
|
let value = InternallyTagged::Struct { a: 1 };
|
||||||
|
|
||||||
assert_tokens(
|
assert_tokens(
|
||||||
&InternallyTagged::Struct { a: 1 },
|
&value,
|
||||||
&[
|
&[
|
||||||
Token::Struct {
|
Token::Struct {
|
||||||
name: "InternallyTagged",
|
name: "InternallyTagged",
|
||||||
@ -302,12 +475,35 @@ fn struct_() {
|
|||||||
Token::StructEnd,
|
Token::StructEnd,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
assert_de_tokens(
|
||||||
|
&value,
|
||||||
|
&[
|
||||||
|
Token::Struct {
|
||||||
|
name: "InternallyTagged",
|
||||||
|
len: 2,
|
||||||
|
},
|
||||||
|
Token::BorrowedStr("tag"),
|
||||||
|
Token::BorrowedStr("Struct"),
|
||||||
|
Token::BorrowedStr("a"),
|
||||||
|
Token::U8(1),
|
||||||
|
Token::StructEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
assert_de_tokens(
|
assert_de_tokens(
|
||||||
&InternallyTagged::Struct { a: 1 },
|
&value,
|
||||||
&[
|
&[
|
||||||
Token::Seq { len: Some(2) },
|
Token::Seq { len: Some(2) },
|
||||||
Token::Str("Struct"),
|
Token::Str("Struct"), // tag
|
||||||
|
Token::U8(1),
|
||||||
|
Token::SeqEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
assert_de_tokens(
|
||||||
|
&value,
|
||||||
|
&[
|
||||||
|
Token::Seq { len: Some(2) },
|
||||||
|
Token::BorrowedStr("Struct"), // tag
|
||||||
Token::U8(1),
|
Token::U8(1),
|
||||||
Token::SeqEnd,
|
Token::SeqEnd,
|
||||||
],
|
],
|
||||||
@ -330,7 +526,7 @@ mod struct_enum {
|
|||||||
|
|
||||||
let value = InternallyTagged::StructEnum { enum_: Enum::Unit };
|
let value = InternallyTagged::StructEnum { enum_: Enum::Unit };
|
||||||
|
|
||||||
assert_de_tokens(
|
assert_tokens(
|
||||||
&value,
|
&value,
|
||||||
&[
|
&[
|
||||||
Token::Struct {
|
Token::Struct {
|
||||||
@ -341,6 +537,22 @@ mod struct_enum {
|
|||||||
Token::Str("StructEnum"),
|
Token::Str("StructEnum"),
|
||||||
Token::Str("enum_"),
|
Token::Str("enum_"),
|
||||||
Token::Enum { name: "Enum" },
|
Token::Enum { name: "Enum" },
|
||||||
|
Token::Str("Unit"),
|
||||||
|
Token::Unit,
|
||||||
|
Token::StructEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
assert_de_tokens(
|
||||||
|
&value,
|
||||||
|
&[
|
||||||
|
Token::Struct {
|
||||||
|
name: "InternallyTagged",
|
||||||
|
len: 2,
|
||||||
|
},
|
||||||
|
Token::BorrowedStr("tag"),
|
||||||
|
Token::BorrowedStr("StructEnum"),
|
||||||
|
Token::BorrowedStr("enum_"),
|
||||||
|
Token::Enum { name: "Enum" },
|
||||||
Token::BorrowedStr("Unit"),
|
Token::BorrowedStr("Unit"),
|
||||||
Token::Unit,
|
Token::Unit,
|
||||||
Token::StructEnd,
|
Token::StructEnd,
|
||||||
@ -355,6 +567,19 @@ mod struct_enum {
|
|||||||
Token::Str("StructEnum"),
|
Token::Str("StructEnum"),
|
||||||
Token::Str("enum_"),
|
Token::Str("enum_"),
|
||||||
Token::Enum { name: "Enum" },
|
Token::Enum { name: "Enum" },
|
||||||
|
Token::Str("Unit"),
|
||||||
|
Token::Unit,
|
||||||
|
Token::MapEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
assert_de_tokens(
|
||||||
|
&value,
|
||||||
|
&[
|
||||||
|
Token::Map { len: Some(2) },
|
||||||
|
Token::BorrowedStr("tag"),
|
||||||
|
Token::BorrowedStr("StructEnum"),
|
||||||
|
Token::BorrowedStr("enum_"),
|
||||||
|
Token::Enum { name: "Enum" },
|
||||||
Token::BorrowedStr("Unit"),
|
Token::BorrowedStr("Unit"),
|
||||||
Token::Unit,
|
Token::Unit,
|
||||||
Token::MapEnd,
|
Token::MapEnd,
|
||||||
@ -367,6 +592,17 @@ mod struct_enum {
|
|||||||
Token::Seq { len: Some(2) },
|
Token::Seq { len: Some(2) },
|
||||||
Token::Str("StructEnum"), // tag
|
Token::Str("StructEnum"), // tag
|
||||||
Token::Enum { name: "Enum" }, // enum_
|
Token::Enum { name: "Enum" }, // enum_
|
||||||
|
Token::Str("Unit"),
|
||||||
|
Token::Unit,
|
||||||
|
Token::SeqEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
assert_de_tokens(
|
||||||
|
&value,
|
||||||
|
&[
|
||||||
|
Token::Seq { len: Some(2) },
|
||||||
|
Token::BorrowedStr("StructEnum"), // tag
|
||||||
|
Token::Enum { name: "Enum" }, // enum_
|
||||||
Token::BorrowedStr("Unit"),
|
Token::BorrowedStr("Unit"),
|
||||||
Token::Unit,
|
Token::Unit,
|
||||||
Token::SeqEnd,
|
Token::SeqEnd,
|
||||||
@ -786,7 +1022,7 @@ fn unit_variant_with_unknown_fields() {
|
|||||||
assert_de_tokens_error::<InternallyTagged>(
|
assert_de_tokens_error::<InternallyTagged>(
|
||||||
&[
|
&[
|
||||||
Token::Seq { len: None },
|
Token::Seq { len: None },
|
||||||
Token::Str("Unit"),
|
Token::Str("Unit"), // tag
|
||||||
Token::I32(0),
|
Token::I32(0),
|
||||||
Token::SeqEnd,
|
Token::SeqEnd,
|
||||||
],
|
],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user