summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSam Scott <sam.scott89@gmail.com>2017-03-12 13:52:25 -0400
committerSam Scott <sam.scott89@gmail.com>2017-03-12 13:52:25 -0400
commit317b8b17f3e3656cdc64fc6435889d005aa9a8af (patch)
tree5ad198434680593d4eaf7b677ed2da0e29367d98 /tests
parent0f1e379af7d42f237ca0989a4445b9abf1de5d0a (diff)
Expand out example and a bit of testing.
Diffstat (limited to 'tests')
-rw-r--r--tests/test_deserialize.rs2
-rw-r--r--tests/test_serialize.rs53
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(&params),
- 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(&params),
- Ok(urlencode("x[0]=0&x[1]=1&x[2]=2&y[0][thing]=Thing&y[0][other]=12")));
+ assert_eq!(qs::to_string(&params).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")
}