summaryrefslogtreecommitdiff
path: root/tests/test_deserialize.rs
diff options
context:
space:
mode:
authorSam Scott <sam.scott89@gmail.com>2017-05-20 22:07:44 +0100
committerSam Scott <sam.scott89@gmail.com>2017-05-20 22:07:44 +0100
commit6e71ba43eb6bd62f2b567224e387333016bd3a5c (patch)
treefacec78176a03f5df9124949f7043188224e370c /tests/test_deserialize.rs
parenta810aff7ab7891579d69fcdffefeaca3835ce533 (diff)
Rewrite of most components.
Simplify `ser` logic, and expand `de` functionality.
Diffstat (limited to 'tests/test_deserialize.rs')
-rw-r--r--tests/test_deserialize.rs35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/test_deserialize.rs b/tests/test_deserialize.rs
index 569be0c..5d6d2c6 100644
--- a/tests/test_deserialize.rs
+++ b/tests/test_deserialize.rs
@@ -333,3 +333,38 @@ fn deserialize_enum_adjacently() {
let rec_params: Query = qs::from_str(params).unwrap();
assert_eq!(rec_params, Query { e: E::S("other".to_string()), v: None });
}
+
+#[test]
+fn deserialize_enum() {
+ #[derive(Deserialize, Debug, PartialEq)]
+ struct NewU8(u8);
+
+ #[derive(Deserialize, Debug, PartialEq)]
+ enum E {
+ B,
+ S(String),
+ }
+
+ #[derive(Deserialize, Debug, PartialEq)]
+ enum V {
+ V1 { x: u8, y: u16 },
+ V2(String),
+ }
+
+ #[derive(Deserialize, Debug, PartialEq)]
+ struct Query {
+ e: E,
+ v: Option<V>,
+ u: NewU8,
+ }
+
+ let params = "e=B&v[V1][x]=12&v[V1][y]=300&u=12";
+ let rec_params: Query = qs::from_str(params).unwrap();
+ assert_eq!(rec_params,
+ Query { e: E::B, v: Some(V::V1 { x: 12, y: 300 }), u: NewU8(12) }
+ );
+
+ let params = "e[S]=other&u=1";
+ let rec_params: Query = qs::from_str(params).unwrap();
+ assert_eq!(rec_params, Query { e: E::S("other".to_string()), v: None, u: NewU8(1) });
+}