mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-04-28 10:17:58 +00:00
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:
@@ -147,8 +147,10 @@ mod newtype_enum {
|
||||
enum Inner {
|
||||
Unit,
|
||||
Newtype(u8),
|
||||
Tuple0(),
|
||||
Tuple2(u8, u8),
|
||||
Struct { f: u8 },
|
||||
EmptyStruct {},
|
||||
}
|
||||
|
||||
// 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
|
||||
#[test]
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user