From 096d851f6d878c2c727f530ccc5749b4d8be2ab0 Mon Sep 17 00:00:00 2001 From: Rudi Floren Date: Thu, 2 Mar 2023 06:01:26 +0100 Subject: Improve support unit types (#76) * fix unit type serialization issue `()` and `A` returned a no key error previously. This is very unergonimic if you just have a trait bound for Serialize and want to generate an empty querystring `?` * add support for deserializing unit structs * Comment updates for serializer methods --- tests/test_deserialize.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'tests/test_deserialize.rs') diff --git a/tests/test_deserialize.rs b/tests/test_deserialize.rs index 92e5f53..b2f9dc8 100644 --- a/tests/test_deserialize.rs +++ b/tests/test_deserialize.rs @@ -699,3 +699,26 @@ fn deserialize_map_with_int_keys() { serde_qs::from_str::("mapping[1]=2&mapping[1]=4") .expect_err("should error with repeated key"); } + +#[test] +fn deserialize_unit_types() { + #[derive(Debug, Deserialize, PartialEq)] + struct A; + #[derive(Debug, Deserialize, PartialEq)] + struct B<'a> { + t: (), + a: &'a str, + } + + let test: () = serde_qs::from_str("").unwrap(); + assert_eq!(test, ()); + + let test: A = serde_qs::from_str("").unwrap(); + assert_eq!(test, A); + + let test: B = serde_qs::from_str("a=test&t=").unwrap(); + assert_eq!(test, B { t: (), a: "test" }); + + let test: B = serde_qs::from_str("t=&a=test").unwrap(); + assert_eq!(test, B { t: (), a: "test" }); +} -- cgit v1.2.3