diff options
author | Sam Scott <sam.scott89@gmail.com> | 2017-03-12 13:52:25 -0400 |
---|---|---|
committer | Sam Scott <sam.scott89@gmail.com> | 2017-03-12 13:52:25 -0400 |
commit | 317b8b17f3e3656cdc64fc6435889d005aa9a8af (patch) | |
tree | 5ad198434680593d4eaf7b677ed2da0e29367d98 /tests | |
parent | 0f1e379af7d42f237ca0989a4445b9abf1de5d0a (diff) |
Expand out example and a bit of testing.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_deserialize.rs | 2 | ||||
-rw-r--r-- | tests/test_serialize.rs | 53 |
2 files changed, 26 insertions, 29 deletions
diff --git a/tests/test_deserialize.rs b/tests/test_deserialize.rs index c6d4673..1e83589 100644 --- a/tests/test_deserialize.rs +++ b/tests/test_deserialize.rs @@ -15,6 +15,7 @@ struct QueryParams { id: u8, name: String, address: Address, + phone: u32, user_ids: Vec<u8>, } @@ -67,6 +68,7 @@ fn deserialize_struct() { let params = QueryParams { id: 42, name: "Acme".to_string(), + phone: 12345, address: Address { city: "Carrot City".to_string(), postcode: "12345".to_string(), diff --git a/tests/test_serialize.rs b/tests/test_serialize.rs index ccac101..af66903 100644 --- a/tests/test_serialize.rs +++ b/tests/test_serialize.rs @@ -2,43 +2,38 @@ extern crate serde_derive; extern crate serde_qs as qs; -#[derive(Serialize, Deserialize)] -struct Foo { bar: Bar, baz: Baz } -#[derive(Serialize, Deserialize)] -struct Bar { x: u8, y: String } -#[derive(Serialize, Deserialize)] -struct Baz { thing: String, other: u8 } +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +struct Address { + city: String, + postcode: String, +} -#[derive(Serialize, Deserialize)] -struct Complex { x: Vec<u8>, y: Vec<Baz> } +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +struct QueryParams { + id: u8, + name: String, + phone: u32, + address: Address, + user_ids: Vec<u8>, +} #[test] fn serialize_struct() { - let params = Foo { - bar: Bar { - x: 10, - y: "Ten".to_owned() - }, - baz: Baz { - thing: "Thing".to_owned(), - other: 12 - } - }; - - assert_eq!(qs::to_string(¶ms), - Ok(urlencode("bar[x]=10&bar[y]=Ten&baz[thing]=Thing&baz[other]=12"))); - - let params = Complex { - x: vec![0,1,2], - y: vec![params.baz], + let params = QueryParams { + id: 42, + name: "Acme".to_string(), + phone: 12345, + address: Address { + city: "Carrot City".to_string(), + postcode: "12345".to_string(), + }, + user_ids: vec!(1,2,3,4), }; - - assert_eq!(qs::to_string(¶ms), - Ok(urlencode("x[0]=0&x[1]=1&x[2]=2&y[0][thing]=Thing&y[0][other]=12"))); + assert_eq!(qs::to_string(¶ms).unwrap(), urlencode("id=42&name=Acme&phone=12345&address[city]=Carrot+City&address[postcode]=12345&user_ids[0]=1&user_ids[1]=2&user_ids[2]=3&user_ids[3]=4")); } fn urlencode(input: &str) -> String { - str::replace(&str::replace(input, "[", "%5B"), "]", "%5D") + str::replace(&str::replace(input, "[", "%5B"), "]", "%5D") } |