From 81b77bd7e7f3397ddfeeb9a63f5c74a08fd6837c Mon Sep 17 00:00:00 2001 From: Sam Scott Date: Mon, 20 Mar 2017 20:16:33 +0000 Subject: Add support for optional sequences and structs. --- tests/test_deserialize.rs | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'tests/test_deserialize.rs') diff --git a/tests/test_deserialize.rs b/tests/test_deserialize.rs index dc93bd5..9ef164c 100644 --- a/tests/test_deserialize.rs +++ b/tests/test_deserialize.rs @@ -192,3 +192,50 @@ fn qs_nesting() { map_test!("a[b][c][d][e][f][g][h]=i", "a"["b"["c"["d"["e"["[f][g][h]"["i"]]]]]]); } + +#[test] +fn optional_seq() { + #[derive(Debug,Serialize,Deserialize,PartialEq)] + struct Query { + vec: Option>, + } + + let params = "vec="; + let query = Query { + vec: None, + }; + let rec_params: Query = qs::from_str(params).unwrap(); + assert_eq!(rec_params, query); + + let params = "vec[0]=1&vec[1]=2"; + let query = Query { + vec: Some(vec![1,2]), + }; + let rec_params: Query = qs::from_str(params).unwrap(); + assert_eq!(rec_params, query); +} + +#[test] +fn optional_struct() { + #[derive(Debug,Serialize,Deserialize,PartialEq)] + struct Query { + address: Option
, + } + + let params = "address="; + let query = Query { + address: None, + }; + let rec_params: Query = qs::from_str(params).unwrap(); + assert_eq!(rec_params, query); + + let params = "address[city]=Carrot+City&address[postcode]=12345"; + let query = Query { + address: Some(Address { + city: "Carrot City".to_string(), + postcode: "12345".to_string(), + },), + }; + let rec_params: Query = qs::from_str(params).unwrap(); + assert_eq!(rec_params, query); +} -- cgit v1.2.3