diff options
author | Sam Scott <sam.scott89@gmail.com> | 2017-03-20 20:16:33 +0000 |
---|---|---|
committer | Sam Scott <sam.scott89@gmail.com> | 2017-03-20 20:18:16 +0000 |
commit | 81b77bd7e7f3397ddfeeb9a63f5c74a08fd6837c (patch) | |
tree | d17d56f8a210adabbb4d5468e1fff73d052b0de5 /tests/test_deserialize.rs | |
parent | 579af8c2aa5cf4ab520945084a162c86a74447e9 (diff) |
Add support for optional sequences and structs.
Diffstat (limited to 'tests/test_deserialize.rs')
-rw-r--r-- | tests/test_deserialize.rs | 47 |
1 files changed, 47 insertions, 0 deletions
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<Vec<u8>>, + } + + 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<Address>, + } + + 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); +} |