summaryrefslogtreecommitdiff
path: root/tests/test_deserialize.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_deserialize.rs')
-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")]