From 4987fd15f7bf26c5c7809fd772a218e8782a6d59 Mon Sep 17 00:00:00 2001 From: Mingun Date: Tue, 8 Aug 2023 00:54:36 +0500 Subject: [PATCH] Convert newtype_enum and struct_enum tests into modules Separate testing each variant kind of enum (unit, newtype, tuple, struct) results in more specific information if that checks fail (review this commit with "ignore whitespace changes" option on) --- .../tests/test_enum_internally_tagged.rs | 279 ++++++++++-------- 1 file changed, 148 insertions(+), 131 deletions(-) diff --git a/test_suite/tests/test_enum_internally_tagged.rs b/test_suite/tests/test_enum_internally_tagged.rs index 91607605..38c8dc61 100644 --- a/test_suite/tests/test_enum_internally_tagged.rs +++ b/test_suite/tests/test_enum_internally_tagged.rs @@ -187,90 +187,103 @@ fn newtype_struct() { ); } -#[test] -fn newtype_enum() { - assert_tokens( - &InternallyTagged::NewtypeEnum(Enum::Unit), - &[ - Token::Map { len: Some(2) }, - Token::Str("tag"), - Token::Str("NewtypeEnum"), - Token::Str("Unit"), - Token::Unit, - Token::MapEnd, - ], - ); +mod newtype_enum { + use super::*; - assert_tokens( - &InternallyTagged::NewtypeEnum(Enum::Newtype(1)), - &[ - Token::Map { len: Some(2) }, - Token::Str("tag"), - Token::Str("NewtypeEnum"), - Token::Str("Newtype"), - Token::U8(1), - Token::MapEnd, - ], - ); + #[test] + fn unit() { + assert_tokens( + &InternallyTagged::NewtypeEnum(Enum::Unit), + &[ + Token::Map { len: Some(2) }, + Token::Str("tag"), + Token::Str("NewtypeEnum"), + Token::Str("Unit"), + Token::Unit, + Token::MapEnd, + ], + ); + } - // Reaches crate::private::de::content::VariantDeserializer::tuple_variant - // Content::Seq case - // via ContentDeserializer::deserialize_enum - assert_tokens( - &InternallyTagged::NewtypeEnum(Enum::Tuple(1, 1)), - &[ - Token::Map { len: Some(2) }, - Token::Str("tag"), - Token::Str("NewtypeEnum"), - Token::Str("Tuple"), - Token::TupleStruct { - name: "Tuple", - len: 2, - }, - Token::U8(1), - Token::U8(1), - Token::TupleStructEnd, - Token::MapEnd, - ], - ); + #[test] + fn newtype() { + assert_tokens( + &InternallyTagged::NewtypeEnum(Enum::Newtype(1)), + &[ + Token::Map { len: Some(2) }, + Token::Str("tag"), + Token::Str("NewtypeEnum"), + Token::Str("Newtype"), + Token::U8(1), + Token::MapEnd, + ], + ); + } - // Reaches crate::private::de::content::VariantDeserializer::struct_variant - // Content::Map case - // via ContentDeserializer::deserialize_enum - assert_tokens( - &InternallyTagged::NewtypeEnum(Enum::Struct { f: 1 }), - &[ - Token::Map { len: Some(2) }, - Token::Str("tag"), - Token::Str("NewtypeEnum"), - Token::Str("Struct"), - Token::Struct { - name: "Struct", - len: 1, - }, - Token::Str("f"), - Token::U8(1), - Token::StructEnd, - Token::MapEnd, - ], - ); + #[test] + fn tuple() { + // Reaches crate::private::de::content::VariantDeserializer::tuple_variant + // Content::Seq case + // via ContentDeserializer::deserialize_enum + assert_tokens( + &InternallyTagged::NewtypeEnum(Enum::Tuple(1, 1)), + &[ + Token::Map { len: Some(2) }, + Token::Str("tag"), + Token::Str("NewtypeEnum"), + Token::Str("Tuple"), + Token::TupleStruct { + name: "Tuple", + len: 2, + }, + Token::U8(1), + Token::U8(1), + Token::TupleStructEnd, + Token::MapEnd, + ], + ); + } - // Reaches crate::private::de::content::VariantDeserializer::struct_variant - // Content::Seq case - // via ContentDeserializer::deserialize_enum - assert_de_tokens( - &InternallyTagged::NewtypeEnum(Enum::Struct { f: 1 }), - &[ - Token::Map { len: Some(2) }, - Token::Str("tag"), - Token::Str("NewtypeEnum"), - Token::Str("Struct"), - Token::Seq { len: Some(1) }, - Token::U8(1), // f - Token::SeqEnd, - Token::MapEnd, - ], - ); + #[test] + fn struct_() { + // Reaches crate::private::de::content::VariantDeserializer::struct_variant + // Content::Map case + // via ContentDeserializer::deserialize_enum + assert_tokens( + &InternallyTagged::NewtypeEnum(Enum::Struct { f: 1 }), + &[ + Token::Map { len: Some(2) }, + Token::Str("tag"), + Token::Str("NewtypeEnum"), + Token::Str("Struct"), + Token::Struct { + name: "Struct", + len: 1, + }, + Token::Str("f"), + Token::U8(1), + Token::StructEnd, + Token::MapEnd, + ], + ); + + // Reaches crate::private::de::content::VariantDeserializer::struct_variant + // Content::Seq case + // via ContentDeserializer::deserialize_enum + assert_de_tokens( + &InternallyTagged::NewtypeEnum(Enum::Struct { f: 1 }), + &[ + Token::Map { len: Some(2) }, + Token::Str("tag"), + Token::Str("NewtypeEnum"), + Token::Str("Struct"), + Token::Seq { len: Some(1) }, + Token::U8(1), // f + Token::SeqEnd, + Token::MapEnd, + ], + ); + } } #[test] @@ -301,61 +314,65 @@ fn struct_() { ); } -#[test] -fn struct_enum() { - assert_de_tokens( - &Enum::Unit, - &[ - Token::Enum { name: "Enum" }, - Token::BorrowedStr("Unit"), - Token::Unit, - ], - ); +mod struct_enum { + use super::*; - let value = InternallyTagged::StructEnum { enum_: Enum::Unit }; + #[test] + fn unit() { + assert_de_tokens( + &Enum::Unit, + &[ + Token::Enum { name: "Enum" }, + Token::BorrowedStr("Unit"), + Token::Unit, + ], + ); - assert_de_tokens( - &value, - &[ - Token::Struct { - name: "InternallyTagged", - len: 2, - }, - Token::Str("tag"), - Token::Str("StructEnum"), - Token::Str("enum_"), - Token::Enum { name: "Enum" }, - Token::BorrowedStr("Unit"), - Token::Unit, - Token::StructEnd, - ], - ); + let value = InternallyTagged::StructEnum { enum_: Enum::Unit }; - assert_de_tokens( - &value, - &[ - Token::Map { len: Some(2) }, - Token::Str("tag"), - Token::Str("StructEnum"), - Token::Str("enum_"), - Token::Enum { name: "Enum" }, - Token::BorrowedStr("Unit"), - Token::Unit, - Token::MapEnd, - ], - ); + assert_de_tokens( + &value, + &[ + Token::Struct { + name: "InternallyTagged", + len: 2, + }, + Token::Str("tag"), + Token::Str("StructEnum"), + Token::Str("enum_"), + Token::Enum { name: "Enum" }, + Token::BorrowedStr("Unit"), + Token::Unit, + Token::StructEnd, + ], + ); - assert_de_tokens( - &value, - &[ - Token::Seq { len: Some(2) }, - Token::Str("StructEnum"), // tag - Token::Enum { name: "Enum" }, // enum_ - Token::BorrowedStr("Unit"), - Token::Unit, - Token::SeqEnd, - ], - ); + assert_de_tokens( + &value, + &[ + Token::Map { len: Some(2) }, + Token::Str("tag"), + Token::Str("StructEnum"), + Token::Str("enum_"), + Token::Enum { name: "Enum" }, + Token::BorrowedStr("Unit"), + Token::Unit, + Token::MapEnd, + ], + ); + + assert_de_tokens( + &value, + &[ + Token::Seq { len: Some(2) }, + Token::Str("StructEnum"), // tag + Token::Enum { name: "Enum" }, // enum_ + Token::BorrowedStr("Unit"), + Token::Unit, + Token::SeqEnd, + ], + ); + } } #[test]