From 6e71ba43eb6bd62f2b567224e387333016bd3a5c Mon Sep 17 00:00:00 2001 From: Sam Scott Date: Sat, 20 May 2017 22:07:44 +0100 Subject: Rewrite of most components. Simplify `ser` logic, and expand `de` functionality. --- tests/test_serialize.rs | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'tests/test_serialize.rs') 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 -- cgit v1.2.3