summaryrefslogtreecommitdiff
path: root/tests/test_serialize.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_serialize.rs
parenta810aff7ab7891579d69fcdffefeaca3835ce533 (diff)
Rewrite of most components.
Simplify `ser` logic, and expand `de` functionality.
Diffstat (limited to 'tests/test_serialize.rs')
-rw-r--r--tests/test_serialize.rs47
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/test_serialize.rs b/tests/test_serialize.rs
index 5751ff6..7d9c38f 100644
--- a/tests/test_serialize.rs
+++ b/tests/test_serialize.rs
@@ -63,3 +63,50 @@ fn serialize_option() {
let rec_params = qs::to_string(&query).unwrap();
assert_eq!(rec_params, params);
}
+
+#[test]
+fn serialize_enum() {
+ #[derive(Debug,Serialize,Deserialize,PartialEq)]
+ #[serde(rename_all = "lowercase")]
+ enum TestEnum {
+ A,
+ B(bool),
+ C { x: u8, y: u8},
+ D(u8, u8),
+ }
+
+ #[derive(Debug,Serialize,Deserialize,PartialEq)]
+ struct Query {
+ e: TestEnum,
+ }
+
+ let params = urlencode("e=a");
+ let query = Query {
+ e: TestEnum::A,
+ };
+ let rec_params = qs::to_string(&query).unwrap();
+ assert_eq!(rec_params, params);
+
+ let params = urlencode("e[b]=true");
+ let query = Query {
+ e: TestEnum::B(true),
+ };
+ let rec_params = qs::to_string(&query).unwrap();
+ assert_eq!(rec_params, params);
+
+ let params = urlencode("e[c][x]=2&e[c][y]=3");
+ let query = Query {
+ e: TestEnum::C { x: 2, y: 3 },
+ };
+ let rec_params = qs::to_string(&query).unwrap();
+ assert_eq!(rec_params, params);
+
+ let params = urlencode("e[d][0]=128&e[d][1]=1");
+ let query = Query {
+ e: TestEnum::D(128, 1),
+ };
+ let rec_params = qs::to_string(&query).unwrap();
+ assert_eq!(rec_params, params);
+
+
+} \ No newline at end of file