From 1335f8521322f22d666ab4cc0765243d78a77536 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sun, 20 May 2018 13:53:29 -0700 Subject: [PATCH] Test transparent attribute --- test_suite/tests/test_annotations.rs | 39 ++++++++++++++++++++++++++++ test_suite/tests/test_gen.rs | 8 ++++++ 2 files changed, 47 insertions(+) diff --git a/test_suite/tests/test_annotations.rs b/test_suite/tests/test_annotations.rs index 5b82ad88..aea692cb 100644 --- a/test_suite/tests/test_annotations.rs +++ b/test_suite/tests/test_annotations.rs @@ -15,6 +15,7 @@ extern crate serde; use self::serde::de::{self, Unexpected}; use self::serde::{Deserialize, Deserializer, Serialize, Serializer}; use std::collections::HashMap; +use std::marker::PhantomData; extern crate serde_test; use self::serde_test::{ @@ -2161,3 +2162,41 @@ fn test_flatten_option() { &[Token::Map { len: None }, Token::MapEnd], ); } + +#[test] +fn test_transparent_struct() { + #[derive(Serialize, Deserialize, PartialEq, Debug)] + #[serde(transparent)] + struct Transparent { + #[serde(skip)] + a: bool, + b: u32, + #[serde(skip)] + c: bool, + d: PhantomData<()>, + } + + assert_tokens( + &Transparent { + a: false, + b: 1, + c: false, + d: PhantomData, + }, + &[Token::U32(1)], + ); +} + +#[test] +fn test_transparent_tuple_struct() { + #[derive(Serialize, Deserialize, PartialEq, Debug)] + #[serde(transparent)] + struct Transparent( + #[serde(skip)] bool, + u32, + #[serde(skip)] bool, + PhantomData<()>, + ); + + assert_tokens(&Transparent(false, 1, false, PhantomData), &[Token::U32(1)]); +} diff --git a/test_suite/tests/test_gen.rs b/test_suite/tests/test_gen.rs index ffb73210..ef301b59 100644 --- a/test_suite/tests/test_gen.rs +++ b/test_suite/tests/test_gen.rs @@ -653,6 +653,14 @@ fn test_gen() { X, ), } + + #[derive(Serialize, Deserialize)] + #[serde(transparent)] + struct TransparentWith { + #[serde(serialize_with = "ser_x")] + #[serde(deserialize_with = "de_x")] + x: X, + } } //////////////////////////////////////////////////////////////////////////