diff options
author | Sam Scott <sam.scott89@gmail.com> | 2017-03-09 15:58:30 -0500 |
---|---|---|
committer | Sam Scott <sam.scott89@gmail.com> | 2017-03-09 15:58:30 -0500 |
commit | 25ab41ec08a61e1894a500b26dd8e188c1e9015d (patch) | |
tree | 5b33495ae415aa5b5dccaa7d4591c6121cf718f8 /tests | |
parent | 92ba37c0679cb79b6ef686866e5b4c0cc7575878 (diff) |
Add sequence deserializing.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_deserialize.rs | 22 |
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 { |