summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJesse Morgan <jesse@jesterpm.net>2025-03-04 19:47:12 -0800
committerJesse Morgan <jesse@jesterpm.net>2025-03-04 19:47:12 -0800
commitb6cae020adf784dc241316a8b8f855ecf4416160 (patch)
tree3620226136b220542ffab11daf66da8b17fab123 /tests
parente51f658461d8ab9c7caa64e93f5cf706183ce109 (diff)
parent058781081b811b65bf14bf2b673de22d0761fbad (diff)
Merge remote-tracking branch 'sbihel/main'HEADpatchedmaster
Diffstat (limited to 'tests')
-rw-r--r--tests/test_deserialize.rs45
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")]