Merge pull request 2560 from Mingun/honest-test

This commit is contained in:
David Tolnay
2024-03-03 15:53:02 -08:00
2 changed files with 22 additions and 0 deletions
+7
View File
@@ -313,6 +313,8 @@ mod content {
} }
} }
/// Used to capture data in [`Content`] from other deserializers.
/// Cannot capture externally tagged enums, `i128` and `u128`.
struct ContentVisitor<'de> { struct ContentVisitor<'de> {
value: PhantomData<Content<'de>>, value: PhantomData<Content<'de>>,
} }
@@ -528,6 +530,8 @@ mod content {
Content(Content<'de>), Content(Content<'de>),
} }
/// Serves as a seed for deserializing a key of internally tagged enum.
/// Cannot capture externally tagged enums, `i128` and `u128`.
struct TagOrContentVisitor<'de> { struct TagOrContentVisitor<'de> {
name: &'static str, name: &'static str,
value: PhantomData<TagOrContent<'de>>, value: PhantomData<TagOrContent<'de>>,
@@ -814,6 +818,9 @@ mod content {
/// Used by generated code to deserialize an internally tagged enum. /// Used by generated code to deserialize an internally tagged enum.
/// ///
/// Captures map or sequence from the original deserializer and searches
/// a tag in it (in case of sequence, tag is the first element of sequence).
///
/// Not public API. /// Not public API.
pub struct TaggedContentVisitor<T> { pub struct TaggedContentVisitor<T> {
tag_name: &'static str, tag_name: &'static str,
+15
View File
@@ -1081,6 +1081,15 @@ fn test_internally_tagged_struct_variant_containing_unit_variant() {
Log { level: Level }, Log { level: Level },
} }
assert_de_tokens(
&Level::Info,
&[
Token::Enum { name: "Level" },
Token::BorrowedStr("Info"),
Token::Unit,
],
);
assert_de_tokens( assert_de_tokens(
&Message::Log { level: Level::Info }, &Message::Log { level: Level::Info },
&[ &[
@@ -1091,7 +1100,9 @@ fn test_internally_tagged_struct_variant_containing_unit_variant() {
Token::Str("action"), Token::Str("action"),
Token::Str("Log"), Token::Str("Log"),
Token::Str("level"), Token::Str("level"),
Token::Enum { name: "Level" },
Token::BorrowedStr("Info"), Token::BorrowedStr("Info"),
Token::Unit,
Token::StructEnd, Token::StructEnd,
], ],
); );
@@ -1103,7 +1114,9 @@ fn test_internally_tagged_struct_variant_containing_unit_variant() {
Token::Str("action"), Token::Str("action"),
Token::Str("Log"), Token::Str("Log"),
Token::Str("level"), Token::Str("level"),
Token::Enum { name: "Level" },
Token::BorrowedStr("Info"), Token::BorrowedStr("Info"),
Token::Unit,
Token::MapEnd, Token::MapEnd,
], ],
); );
@@ -1113,7 +1126,9 @@ fn test_internally_tagged_struct_variant_containing_unit_variant() {
&[ &[
Token::Seq { len: Some(2) }, Token::Seq { len: Some(2) },
Token::Str("Log"), Token::Str("Log"),
Token::Enum { name: "Level" },
Token::BorrowedStr("Info"), Token::BorrowedStr("Info"),
Token::Unit,
Token::SeqEnd, Token::SeqEnd,
], ],
); );