From 25ab41ec08a61e1894a500b26dd8e188c1e9015d Mon Sep 17 00:00:00 2001 From: Sam Scott Date: Thu, 9 Mar 2017 15:58:30 -0500 Subject: Add sequence deserializing. --- tests/test_deserialize.rs | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'tests') 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, y: Vec } + + #[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 { -- cgit v1.2.3