More serialization test updates

This commit is contained in:
Jonas Platte 2020-05-15 00:56:05 +02:00
parent 9092f7d6d8
commit 7aa27c2a2d
No known key found for this signature in database
GPG Key ID: 7D261D771D915378
2 changed files with 25 additions and 50 deletions

View File

@ -19,3 +19,6 @@ itoa = "0.4.5"
serde = { version = "1.0.106", features = ["derive"] } serde = { version = "1.0.106", features = ["derive"] }
serde_json = "1.0.52" serde_json = "1.0.52"
url = "2.1.1" url = "2.1.1"
[dev-dependencies]
matches = "0.1.8"

View File

@ -1,4 +1,5 @@
use ruma_serde::urlencoded; use matches::assert_matches;
use ruma_serde::urlencoded::{self, ser::Error};
use serde::Serialize; use serde::Serialize;
use url::form_urlencoded::Serializer as Encoder; use url::form_urlencoded::Serializer as Encoder;
@ -86,10 +87,10 @@ fn serialize_unit_type() {
#[test] #[test]
fn serialize_list_of_str() { fn serialize_list_of_str() {
let s = &[("list", vec!["hello", "world"])]; let params = &[("list", vec!["hello", "world"])];
assert_eq!( assert_eq!(
urlencoded::to_string(s), urlencoded::to_string(params),
Ok("list=hello&list=world".to_owned()) Ok("list=hello&list=world".to_owned())
); );
} }
@ -114,43 +115,32 @@ fn serialize_multiple_lists() {
} }
#[test] #[test]
fn serialize_vec_num() { #[ignore]
let params = [("item", vec![0, 1, 2])]; fn serialize_nested_list() {
let params = &[("list", vec![vec![0u8]])];
assert_matches!(
urlencoded::to_string(params),
Err(Error::Custom(s)) if s.contains("Unsupported")
)
}
#[test]
fn serialize_list_of_option() {
let params = &[("list", vec![Some(10), Some(100)])];
assert_eq!( assert_eq!(
urlencoded::to_string(params), urlencoded::to_string(params),
Ok("item=0&item=1&item=2".to_owned()) Ok("list=10&list=100".to_owned())
); );
} }
#[test] #[test]
fn serialize_vec_str() { fn serialize_list_of_newtype() {
let params = &[("item", vec!["hello", "world", "hello"])]; let params = &[("list", vec![NewType("test".to_owned())])];
assert_eq!( assert_eq!(urlencoded::to_string(params), Ok("list=test".to_owned()));
urlencoded::to_string(params),
Ok("item=hello&item=world&item=hello".to_owned())
);
} }
#[test] #[test]
fn serialize_struct_opt() { fn serialize_list_of_enum() {
let s = &[("list", vec![Some("hello"), Some("world")])];
assert_eq!(
urlencoded::to_string(s),
Ok("list=hello&list=world".to_string())
);
}
#[test]
fn serialize_struct_newtype() {
let s = &[("list", vec![NewType(0), NewType(1)])];
assert_eq!(
"list=0&list=1".to_string(),
urlencoded::to_string(s).unwrap()
);
}
#[test]
fn serialize_struct_unit_enum() {
let params = &[("item", vec![X::A, X::B, X::C])]; let params = &[("item", vec![X::A, X::B, X::C])];
assert_eq!( assert_eq!(
urlencoded::to_string(params), urlencoded::to_string(params),
@ -208,7 +198,7 @@ fn serialize_nested() {
#[test] #[test]
#[ignore] #[ignore]
fn serialize_nested_list() { fn serialize_nested_object_with_list() {
let mut encoder = Encoder::new(String::new()); let mut encoder = Encoder::new(String::new());
let s = Nested { let s = Nested {
@ -221,21 +211,3 @@ fn serialize_nested_list() {
urlencoded::to_string(s).unwrap() urlencoded::to_string(s).unwrap()
); );
} }
#[test]
#[ignore]
fn serialize_nested_list_option() {
let mut encoder = Encoder::new(String::new());
let s = Nested {
item: InnerList {
list: vec![Some(1), Some(2), None],
},
};
assert_eq!(
encoder
.append_pair("item", r#"{"list":[1,2,null]}"#)
.finish(),
urlencoded::to_string(s).unwrap()
);
}