Share externally tagged enum Enum between all tests and reuse in struct_variant_containing_unit_variant

This commit is contained in:
Mingun
2023-08-07 21:30:37 +05:00
parent e999600f8f
commit 28a775db22
+24 -27
View File
@@ -23,6 +23,14 @@ struct Struct {
f: u8, f: u8,
} }
#[derive(Debug, PartialEq, Serialize, Deserialize)]
enum Enum {
Unit,
Newtype(u8),
Tuple(u8, u8),
Struct { f: u8 },
}
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(tag = "tag")] #[serde(tag = "tag")]
enum InternallyTagged { enum InternallyTagged {
@@ -450,28 +458,25 @@ mod string_and_bytes {
#[test] #[test]
fn struct_variant_containing_unit_variant() { fn struct_variant_containing_unit_variant() {
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub enum Level {
Info,
}
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(tag = "tag")] #[serde(tag = "tag")]
pub enum Message { enum Message {
Log { level: Level }, Log { level: Enum },
} }
assert_de_tokens( assert_de_tokens(
&Level::Info, &Enum::Unit,
&[ &[
Token::Enum { name: "Level" }, Token::Enum { name: "Enum" },
Token::BorrowedStr("Info"), Token::BorrowedStr("Unit"),
Token::Unit, Token::Unit,
], ],
); );
let value = Message::Log { level: Enum::Unit };
assert_de_tokens( assert_de_tokens(
&Message::Log { level: Level::Info }, &value,
&[ &[
Token::Struct { Token::Struct {
name: "Message", name: "Message",
@@ -480,34 +485,34 @@ fn struct_variant_containing_unit_variant() {
Token::Str("tag"), Token::Str("tag"),
Token::Str("Log"), Token::Str("Log"),
Token::Str("level"), Token::Str("level"),
Token::Enum { name: "Level" }, Token::Enum { name: "Enum" },
Token::BorrowedStr("Info"), Token::BorrowedStr("Unit"),
Token::Unit, Token::Unit,
Token::StructEnd, Token::StructEnd,
], ],
); );
assert_de_tokens( assert_de_tokens(
&Message::Log { level: Level::Info }, &value,
&[ &[
Token::Map { len: Some(2) }, Token::Map { len: Some(2) },
Token::Str("tag"), Token::Str("tag"),
Token::Str("Log"), Token::Str("Log"),
Token::Str("level"), Token::Str("level"),
Token::Enum { name: "Level" }, Token::Enum { name: "Enum" },
Token::BorrowedStr("Info"), Token::BorrowedStr("Unit"),
Token::Unit, Token::Unit,
Token::MapEnd, Token::MapEnd,
], ],
); );
assert_de_tokens( assert_de_tokens(
&Message::Log { level: Level::Info }, &value,
&[ &[
Token::Seq { len: Some(2) }, Token::Seq { len: Some(2) },
Token::Str("Log"), Token::Str("Log"),
Token::Enum { name: "Level" }, Token::Enum { name: "Enum" },
Token::BorrowedStr("Info"), Token::BorrowedStr("Unit"),
Token::Unit, Token::Unit,
Token::SeqEnd, Token::SeqEnd,
], ],
@@ -546,14 +551,6 @@ fn newtype_variant_containing_externally_tagged_enum() {
Inner(Enum), Inner(Enum),
} }
#[derive(Debug, PartialEq, Serialize, Deserialize)]
enum Enum {
Unit,
Newtype(u8),
Tuple(u8, u8),
Struct { f: u8 },
}
assert_tokens( assert_tokens(
&Outer::Inner(Enum::Unit), &Outer::Inner(Enum::Unit),
&[ &[