Add test to verify urlencoded deserializer works with serde attributes
This commit is contained in:
parent
18ba86ac27
commit
91011be2a0
@ -141,6 +141,46 @@ fn deserialize_multiple_lists() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn deserialize_with_serde_attributes() {
|
||||||
|
use std::time::{Duration, SystemTime, UNIX_EPOCH};
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Deserialize)]
|
||||||
|
struct FieldsWithAttributes {
|
||||||
|
#[serde(default)]
|
||||||
|
xs: Vec<bool>,
|
||||||
|
#[serde(default)]
|
||||||
|
def: Option<u8>,
|
||||||
|
#[serde(
|
||||||
|
default,
|
||||||
|
deserialize_with = "ruma_serde::time::opt_ms_since_unix_epoch::deserialize"
|
||||||
|
)]
|
||||||
|
time: Option<SystemTime>,
|
||||||
|
#[serde(default)]
|
||||||
|
flag: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
urlencoded::from_str("xs=true&xs=false&def=3&time=1&flag=true"),
|
||||||
|
Ok(FieldsWithAttributes {
|
||||||
|
xs: vec![true, false],
|
||||||
|
def: Some(3),
|
||||||
|
time: Some(UNIX_EPOCH + Duration::from_millis(1)),
|
||||||
|
flag: true,
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
urlencoded::from_str(""),
|
||||||
|
Ok(FieldsWithAttributes {
|
||||||
|
xs: vec![],
|
||||||
|
def: None,
|
||||||
|
time: None,
|
||||||
|
flag: false,
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn deserialize_nested_list() {
|
fn deserialize_nested_list() {
|
||||||
assert!(urlencoded::from_str::<Vec<(&str, Vec<Vec<bool>>)>>("a=b").is_err());
|
assert!(urlencoded::from_str::<Vec<(&str, Vec<Vec<bool>>)>>("a=b").is_err());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user