From abc081ce9c40c40b4d6156b834617b0ce108b3f6 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sat, 25 Feb 2017 11:58:34 -0800 Subject: [PATCH] Test rename_all attribute --- test_suite/tests/test_macros.rs | 86 +++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/test_suite/tests/test_macros.rs b/test_suite/tests/test_macros.rs index 3e896799..43fe0980 100644 --- a/test_suite/tests/test_macros.rs +++ b/test_suite/tests/test_macros.rs @@ -1225,3 +1225,89 @@ fn test_enum_in_untagged_enum() { ] ); } + +#[test] +fn test_rename_all() { + #[derive(Serialize, Deserialize, Debug, PartialEq)] + #[serde(rename_all = "snake_case")] + enum E { + #[serde(rename_all = "camelCase")] + Serialize { + serialize: bool, + serialize_seq: bool, + }, + #[serde(rename_all = "kebab-case")] + SerializeSeq { + serialize: bool, + serialize_seq: bool, + }, + #[serde(rename_all = "SCREAMING_SNAKE_CASE")] + SerializeMap { + serialize: bool, + serialize_seq: bool, + }, + } + + #[derive(Serialize, Deserialize, Debug, PartialEq)] + #[serde(rename_all = "PascalCase")] + struct S { + serialize: bool, + serialize_seq: bool, + } + + assert_tokens( + &E::Serialize { serialize: true, serialize_seq: true }, + &[ + Token::EnumMapStart("E", "serialize", 2), + Token::EnumMapSep, + Token::Str("serialize"), + Token::Bool(true), + Token::EnumMapSep, + Token::Str("serializeSeq"), + Token::Bool(true), + Token::EnumMapEnd, + ] + ); + + assert_tokens( + &E::SerializeSeq { serialize: true, serialize_seq: true }, + &[ + Token::EnumMapStart("E", "serialize_seq", 2), + Token::EnumMapSep, + Token::Str("serialize"), + Token::Bool(true), + Token::EnumMapSep, + Token::Str("serialize-seq"), + Token::Bool(true), + Token::EnumMapEnd, + ] + ); + + assert_tokens( + &E::SerializeMap { serialize: true, serialize_seq: true }, + &[ + Token::EnumMapStart("E", "serialize_map", 2), + Token::EnumMapSep, + Token::Str("SERIALIZE"), + Token::Bool(true), + Token::EnumMapSep, + Token::Str("SERIALIZE_SEQ"), + Token::Bool(true), + Token::EnumMapEnd, + ] + ); + + assert_tokens( + &S { serialize: true, serialize_seq: true }, + &[ + Token::StructStart("S", 2), + Token::StructSep, + Token::Str("Serialize"), + Token::Bool(true), + Token::StructSep, + Token::Str("SerializeSeq"), + Token::Bool(true), + Token::StructEnd, + ] + ); +}