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