diff --git a/tests/serde.rs b/tests/serde.rs index 5e20f04a..08bbeccc 100644 --- a/tests/serde.rs +++ b/tests/serde.rs @@ -751,7 +751,7 @@ fn test_serde_json() -> serde_json::Result<()> { #[test] #[cfg(not(feature = "no_object"))] fn test_serde_optional() -> Result<(), Box> { - #[derive(Debug, Clone, PartialEq, Eq, Deserialize)] + #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] struct TestStruct { foo: Option, } @@ -774,6 +774,24 @@ fn test_serde_optional() -> Result<(), Box> { assert_eq!(from_dynamic::(&r)?, TestStruct { foo: None }); + let ts = TestStruct { foo: Some('a') }; + + let r = to_dynamic(&ts)?; + + let map = r.cast::(); + + assert_eq!(map.len(), 1); + assert_eq!(map.get("foo").unwrap().as_char().unwrap(), 'a'); + + let ts = TestStruct { foo: None }; + + let r = to_dynamic(&ts)?; + + let map = r.cast::(); + + assert_eq!(map.len(), 1); + assert_eq!(map.get("foo").unwrap().as_unit().unwrap(), ()); + Ok(()) }