From 7efaea89ce552bdf77f56db2ca30b73074e0d4a5 Mon Sep 17 00:00:00 2001 From: Juniper Tyree <50025784+juntyr@users.noreply.github.com> Date: Tue, 5 Mar 2024 18:46:27 +0000 Subject: [PATCH] Add #562 as a test Co-authored-by: porkbrain --- tests/562_flatten.rs | 54 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 tests/562_flatten.rs diff --git a/tests/562_flatten.rs b/tests/562_flatten.rs new file mode 100644 index 00000000..7bc56168 --- /dev/null +++ b/tests/562_flatten.rs @@ -0,0 +1,54 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] +struct SomeCollection { + inner: Vec, +} + +#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] +struct SomeItem { + #[serde(flatten)] + foo: Foo, + #[serde(flatten)] + bar: Bar, +} + +#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] +struct Bar { + name: String, + some_enum: Option, +} + +#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] +struct Foo { + something: String, +} + +#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] +enum SomeEnum { + A, + B, +} + +#[test] +fn roundtrip() { + let scene = SomeCollection { + inner: vec![SomeItem { + foo: Foo { + something: "something".to_string(), + }, + bar: Bar { + name: "name".to_string(), + some_enum: Some(SomeEnum::A), + }, + }], + }; + + let ron = ron::ser::to_string(&scene).unwrap(); + let de: SomeCollection = ron::de::from_str(&ron).unwrap(); + assert_eq!(de, scene); + + let ron = ron::ser::to_string_pretty(&scene, Default::default()).unwrap(); + let _deser_scene: SomeCollection = ron::de::from_str(&ron).unwrap(); + assert_eq!(de, scene); +}