Test special cases that reaches SeqRefDeserializer::deserialize_any len==0 condition
failures (2): newtype_enum::empty_struct_from_seq newtype_enum::tuple0
This commit is contained in:
parent
6588b0ad37
commit
4c5fec1363
@ -2188,6 +2188,7 @@ mod content {
|
|||||||
// test_partially_untagged_enum
|
// test_partially_untagged_enum
|
||||||
// test_partially_untagged_enum_desugared
|
// test_partially_untagged_enum_desugared
|
||||||
// Covered by tests/test_enum_untagged.rs
|
// Covered by tests/test_enum_untagged.rs
|
||||||
|
// newtype_enum::tuple0
|
||||||
// newtype_enum::tuple2
|
// newtype_enum::tuple2
|
||||||
Some(Content::Seq(v)) => {
|
Some(Content::Seq(v)) => {
|
||||||
de::Deserializer::deserialize_any(SeqRefDeserializer::new(v), visitor)
|
de::Deserializer::deserialize_any(SeqRefDeserializer::new(v), visitor)
|
||||||
@ -2219,6 +2220,7 @@ mod content {
|
|||||||
}
|
}
|
||||||
// Covered by tests/test_enum_untagged.rs
|
// Covered by tests/test_enum_untagged.rs
|
||||||
// newtype_enum::struct_from_seq
|
// newtype_enum::struct_from_seq
|
||||||
|
// newtype_enum::empty_struct_from_seq
|
||||||
Some(Content::Seq(v)) => {
|
Some(Content::Seq(v)) => {
|
||||||
de::Deserializer::deserialize_any(SeqRefDeserializer::new(v), visitor)
|
de::Deserializer::deserialize_any(SeqRefDeserializer::new(v), visitor)
|
||||||
}
|
}
|
||||||
|
@ -147,8 +147,10 @@ mod newtype_enum {
|
|||||||
enum Inner {
|
enum Inner {
|
||||||
Unit,
|
Unit,
|
||||||
Newtype(u8),
|
Newtype(u8),
|
||||||
|
Tuple0(),
|
||||||
Tuple2(u8, u8),
|
Tuple2(u8, u8),
|
||||||
Struct { f: u8 },
|
Struct { f: u8 },
|
||||||
|
EmptyStruct {},
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reaches crate::private::de::content::VariantRefDeserializer::unit_variant
|
// Reaches crate::private::de::content::VariantRefDeserializer::unit_variant
|
||||||
@ -178,6 +180,22 @@ mod newtype_enum {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Reaches crate::private::de::content::VariantRefDeserializer::tuple_variant
|
||||||
|
#[test]
|
||||||
|
fn tuple0() {
|
||||||
|
assert_tokens(
|
||||||
|
&Outer::Inner(Inner::Tuple0()),
|
||||||
|
&[
|
||||||
|
Token::TupleVariant {
|
||||||
|
name: "Inner",
|
||||||
|
variant: "Tuple0",
|
||||||
|
len: 0,
|
||||||
|
},
|
||||||
|
Token::TupleVariantEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// Reaches crate::private::de::content::VariantRefDeserializer::tuple_variant
|
// Reaches crate::private::de::content::VariantRefDeserializer::tuple_variant
|
||||||
#[test]
|
#[test]
|
||||||
fn tuple2() {
|
fn tuple2() {
|
||||||
@ -233,6 +251,44 @@ mod newtype_enum {
|
|||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Reaches crate::private::de::content::VariantRefDeserializer::struct_variant
|
||||||
|
// Content::Map case
|
||||||
|
// Special case - empty map
|
||||||
|
#[test]
|
||||||
|
fn empty_struct_from_map() {
|
||||||
|
assert_de_tokens(
|
||||||
|
&Outer::Inner(Inner::EmptyStruct {}),
|
||||||
|
&[
|
||||||
|
Token::Map { len: Some(1) },
|
||||||
|
// tag
|
||||||
|
Token::Str("EmptyStruct"),
|
||||||
|
// content
|
||||||
|
Token::Map { len: Some(0) },
|
||||||
|
Token::MapEnd,
|
||||||
|
Token::MapEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reaches crate::private::de::content::VariantRefDeserializer::struct_variant
|
||||||
|
// Content::Seq case
|
||||||
|
// Special case - empty seq
|
||||||
|
#[test]
|
||||||
|
fn empty_struct_from_seq() {
|
||||||
|
assert_de_tokens(
|
||||||
|
&Outer::Inner(Inner::EmptyStruct {}),
|
||||||
|
&[
|
||||||
|
Token::Map { len: Some(1) },
|
||||||
|
// tag
|
||||||
|
Token::Str("EmptyStruct"),
|
||||||
|
// content
|
||||||
|
Token::Seq { len: Some(0) },
|
||||||
|
Token::SeqEnd,
|
||||||
|
Token::MapEnd,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reaches crate::private::de::content::ContentRefDeserializer::deserialize_option
|
// Reaches crate::private::de::content::ContentRefDeserializer::deserialize_option
|
||||||
|
Loading…
x
Reference in New Issue
Block a user