From 058781081b811b65bf14bf2b673de22d0761fbad Mon Sep 17 00:00:00 2001 From: Simon Bihel Date: Mon, 12 Jun 2023 16:53:06 +0100 Subject: Add support for enums in top level Partially address #71 --- tests/test_deserialize.rs | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'tests/test_deserialize.rs') diff --git a/tests/test_deserialize.rs b/tests/test_deserialize.rs index cbe2019..12c4a8c 100644 --- a/tests/test_deserialize.rs +++ b/tests/test_deserialize.rs @@ -304,6 +304,51 @@ fn deserialize_enum_untagged() { ); } +#[test] +fn deserialize_enum_untagged_top_level() { + #[derive(Deserialize, Debug, PartialEq)] + #[serde(untagged)] + enum E { + B { b: String }, + S { s: String }, + } + + let params = "s=true"; + let rec_params: E = qs::from_str(params).unwrap(); + assert_eq!( + rec_params, + E::S { + s: "true".to_string() + } + ); + let params = "b=test"; + let rec_params: E = qs::from_str(params).unwrap(); + assert_eq!( + rec_params, + E::B { + b: "test".to_string() + } + ); +} + +#[test] +fn deserialize_enum_top_level() { + #[derive(Deserialize, Debug, PartialEq)] + enum E { + B { b: String }, + S { s: String }, + } + + let params = "S[s]=test"; + let rec_params: E = qs::from_str(params).unwrap(); + assert_eq!( + rec_params, + E::S { + s: "test".to_string() + } + ); +} + #[test] fn deserialize_enum_adjacently() { #[derive(Deserialize, Debug, PartialEq)] -- cgit v1.2.3