diff options
author | Jesse Morgan <jesse@jesterpm.net> | 2025-03-04 19:47:12 -0800 |
---|---|---|
committer | Jesse Morgan <jesse@jesterpm.net> | 2025-03-04 19:47:12 -0800 |
commit | b6cae020adf784dc241316a8b8f855ecf4416160 (patch) | |
tree | 3620226136b220542ffab11daf66da8b17fab123 /tests | |
parent | e51f658461d8ab9c7caa64e93f5cf706183ce109 (diff) | |
parent | 058781081b811b65bf14bf2b673de22d0761fbad (diff) |
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_deserialize.rs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/test_deserialize.rs b/tests/test_deserialize.rs index 7d424cc..2e79ef0 100644 --- a/tests/test_deserialize.rs +++ b/tests/test_deserialize.rs @@ -305,6 +305,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)] #[serde(tag = "type", content = "val")] |