summaryrefslogtreecommitdiff
path: root/tests/test_deserialize.rs
diff options
context:
space:
mode:
authorSam Scott <sam.scott89@gmail.com>2017-03-20 20:16:33 +0000
committerSam Scott <sam.scott89@gmail.com>2017-03-20 20:18:16 +0000
commit81b77bd7e7f3397ddfeeb9a63f5c74a08fd6837c (patch)
treed17d56f8a210adabbb4d5468e1fff73d052b0de5 /tests/test_deserialize.rs
parent579af8c2aa5cf4ab520945084a162c86a74447e9 (diff)
Add support for optional sequences and structs.
Diffstat (limited to 'tests/test_deserialize.rs')
-rw-r--r--tests/test_deserialize.rs47
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);
+}