Update url_deserialize tests

This commit is contained in:
Jonas Platte 2020-05-17 22:02:32 +02:00
parent 48c5fb1a73
commit 0e627a8ac1
No known key found for this signature in database
GPG Key ID: CC154DE0E30B7C67

View File

@ -83,19 +83,39 @@ fn deserialize_unit_type() {
assert_eq!(urlencoded::from_str(""), Ok(())); assert_eq!(urlencoded::from_str(""), Ok(()));
} }
#[derive(Clone, Copy, Debug, PartialEq, Deserialize)]
struct Params<'a> {
a: usize,
b: &'a str,
c: Option<u8>,
}
#[test]
fn deserialize_struct() {
let de = Params {
a: 10,
b: "Hello",
c: None,
};
assert_eq!(Ok(de), urlencoded::from_str("a=10&b=Hello"));
assert_eq!(Ok(de), urlencoded::from_str("b=Hello&a=10"));
}
#[derive(Debug, Deserialize, PartialEq)] #[derive(Debug, Deserialize, PartialEq)]
struct Wrapper<T> { struct Wrapper<T> {
item: T, item: T,
} }
#[derive(Debug, PartialEq, Deserialize)] #[derive(Debug, PartialEq, Deserialize)]
struct NewStruct { struct NewStruct<'a> {
list: Vec<String>, #[serde(borrow)]
list: Vec<&'a str>,
} }
#[derive(Debug, PartialEq, Deserialize)] #[derive(Debug, PartialEq, Deserialize)]
struct Struct { struct Struct<'a> {
list: Vec<Option<String>>, #[serde(borrow)]
list: Vec<Option<&'a str>>,
} }
#[derive(Debug, PartialEq, Deserialize)] #[derive(Debug, PartialEq, Deserialize)]
@ -108,36 +128,13 @@ struct ListStruct {
list: Vec<NewType<usize>>, list: Vec<NewType<usize>>,
} }
#[derive(Debug, PartialEq, Deserialize)]
struct MapStruct {
a: usize,
b: String,
c: Option<u8>,
}
#[test]
fn deserialize_mapstruct() {
let de = MapStruct {
a: 10,
b: "Hello".into(),
c: None,
};
assert_eq!(
de,
urlencoded::from_str::<MapStruct>("a=10&b=Hello").unwrap()
);
}
#[test] #[test]
#[ignore] #[ignore]
fn deserialize_newstruct() { fn deserialize_newstruct() {
let de = NewStruct { let de = NewStruct {
list: vec!["hello".into(), "world".into()], list: vec!["hello", "world"],
}; };
assert_eq!( assert_eq!(urlencoded::from_str("list=hello&list=world"), Ok(de));
de,
urlencoded::from_str::<NewStruct>("list=hello&list=world").unwrap()
);
} }
#[test] #[test]
@ -146,21 +143,17 @@ fn deserialize_numlist() {
let de = NumList { let de = NumList {
list: vec![1, 2, 3, 4], list: vec![1, 2, 3, 4],
}; };
assert_eq!( assert_eq!(urlencoded::from_str("list=1&list=2&list=3&list=4"), Ok(de));
de,
urlencoded::from_str::<NumList>("list=1&list=2&list=3&list=4").unwrap()
);
} }
#[test] #[test]
#[ignore] #[ignore]
fn deserialize_vec_bool() { fn deserialize_vec_bool() {
assert_eq!( assert_eq!(
Wrapper { urlencoded::from_str("item=true&item=false&item=false"),
Ok(Wrapper {
item: vec![true, false, false] item: vec![true, false, false]
}, })
urlencoded::from_str::<Wrapper<_>>("item=true&item=false&item=false")
.unwrap()
); );
} }
@ -168,15 +161,14 @@ fn deserialize_vec_bool() {
#[ignore] #[ignore]
fn deserialize_vec_string() { fn deserialize_vec_string() {
assert_eq!( assert_eq!(
Wrapper { urlencoded::from_str("item=hello&item=matrix&item=hello"),
Ok(Wrapper {
item: vec![ item: vec![
"hello".to_string(), "hello".to_string(),
"matrix".to_string(), "matrix".to_string(),
"hello".to_string() "hello".to_string()
], ],
}, })
urlencoded::from_str::<Wrapper<_>>("item=hello&item=matrix&item=hello")
.unwrap()
); );
} }
@ -196,10 +188,10 @@ struct Nested<T> {
} }
#[derive(Debug, Deserialize, PartialEq)] #[derive(Debug, Deserialize, PartialEq)]
struct Inner { struct Inner<'a> {
c: String, c: &'a str,
a: usize, a: usize,
b: String, b: &'a str,
} }
#[derive(Debug, Deserialize, PartialEq)] #[derive(Debug, Deserialize, PartialEq)]
@ -214,19 +206,18 @@ fn deserialize_nested() {
let nested = Nested { let nested = Nested {
item: Inner { item: Inner {
c: "hello".into(), c: "hello",
a: 10, a: 10,
b: "bye".into(), b: "bye",
}, },
}; };
assert_eq!( assert_eq!(
nested, urlencoded::from_str(
urlencoded::from_str::<Nested<Inner>>(
&encoder &encoder
.append_pair("item", r#"{"c":"hello","a":10,"b":"bye"}"#) .append_pair("item", r#"{"c":"hello","a":10,"b":"bye"}"#)
.finish(), .finish(),
) ),
.unwrap() Ok(nested)
); );
} }
@ -242,11 +233,10 @@ fn deserialize_nested_list() {
}; };
assert_eq!( assert_eq!(
nested, urlencoded::from_str(
urlencoded::from_str::<Nested<InnerList<u8>>>(
&encoder.append_pair("item", r#"{"list":[1,2,3]}"#).finish(), &encoder.append_pair("item", r#"{"list":[1,2,3]}"#).finish(),
) ),
.unwrap() Ok(nested)
); );
} }
@ -261,12 +251,11 @@ fn deserialize_nested_list_option() {
}, },
}; };
assert_eq!( assert_eq!(
nested, urlencoded::from_str(
urlencoded::from_str::<Nested<InnerList<Option<u8>>>>(
&encoder &encoder
.append_pair("item", r#"{"list":[1,2,null]}"#) .append_pair("item", r#"{"list":[1,2,null]}"#)
.finish(), .finish(),
) ),
.unwrap() Ok(nested)
); );
} }