summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSam Scott <sam.scott89@gmail.com>2017-03-09 15:58:30 -0500
committerSam Scott <sam.scott89@gmail.com>2017-03-09 15:58:30 -0500
commit25ab41ec08a61e1894a500b26dd8e188c1e9015d (patch)
tree5b33495ae415aa5b5dccaa7d4591c6121cf718f8 /tests
parent92ba37c0679cb79b6ef686866e5b4c0cc7575878 (diff)
Add sequence deserializing.
Diffstat (limited to 'tests')
-rw-r--r--tests/test_deserialize.rs22
1 files changed, 19 insertions, 3 deletions
diff --git a/tests/test_deserialize.rs b/tests/test_deserialize.rs
index 2e2b8fd..fb7d67e 100644
--- a/tests/test_deserialize.rs
+++ b/tests/test_deserialize.rs
@@ -3,13 +3,17 @@ extern crate serde_derive;
extern crate serde_qs as qs;
-#[derive(PartialEq, Debug, Serialize, Deserialize)]
+#[derive(Clone, PartialEq, Debug, Serialize, Deserialize)]
struct A { b: B, c: C }
-#[derive(PartialEq, Debug, Serialize, Deserialize)]
+#[derive(Clone, PartialEq, Debug, Serialize, Deserialize)]
struct B { b1: u8, b2: String }
-#[derive(PartialEq, Debug, Serialize, Deserialize)]
+#[derive(Clone, PartialEq, Debug, Serialize, Deserialize)]
struct C { c1: String, c2: u8 }
+#[derive(PartialEq, Debug, Serialize, Deserialize)]
+struct Complex { x: Vec<u8>, y: Vec<C> }
+
+
#[test]
fn deserialize_struct() {
let params = A {
@@ -22,6 +26,12 @@ fn deserialize_struct() {
c2: 7
}
};
+
+ let complex_params = Complex {
+ x: vec![0,1,2],
+ y: vec![params.c.clone()],
+ };
+
let input = "b[b1]=10&b[b2]=Ten&c[c1]=Seven&c[c2]=7";
let input2 = "c[c1]=Seven&b[b2]=Ten&b[b1]=10&c[c2]=7";
let result: A = qs::from_str(&urlencode(input)).unwrap();
@@ -33,6 +43,12 @@ fn deserialize_struct() {
let result: A = qs::from_str(&input2).unwrap();
assert_eq!(result, params);
+ let input3 = "x[0]=0&x[1]=1&x[2]=2&y[0][c1]=Seven&y[0][c2]=7";
+ let result: Complex = qs::from_str(&input3).unwrap();
+ assert_eq!(complex_params, result);
+
+
+
}
fn urlencode(input: &str) -> String {