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_serialize.rs | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'tests/test_serialize.rs') diff --git a/tests/test_serialize.rs b/tests/test_serialize.rs index b7c4a21..0b9f0c6 100644 --- a/tests/test_serialize.rs +++ b/tests/test_serialize.rs @@ -236,3 +236,41 @@ fn test_serializer() { assert_eq!(writer, b"a[0]=3&a[1]=2&b=a"); } + +#[test] +fn test_serializer_unit() { + use serde::Serialize; + #[derive(Serialize)] + struct A; + #[derive(Serialize)] + struct B { + t: (), + } + + let mut writer = Vec::new(); + { + let serializer = &mut qs::Serializer::new(&mut writer); + let q = (); + q.serialize(serializer).unwrap(); + } + + assert_eq!(writer, b"", "we are testing ()"); + writer.clear(); + + { + let serializer = &mut qs::Serializer::new(&mut writer); + let q = A; + q.serialize(serializer).unwrap(); + } + + assert_eq!(writer, b"", "we are testing A"); + writer.clear(); + + { + let serializer = &mut qs::Serializer::new(&mut writer); + let q = B { t: () }; + q.serialize(serializer).unwrap(); + } + + assert_eq!(writer, b"t=", "we are testing B{{t: ()}}"); +} -- cgit v1.2.3