use es_htmlform::value::{ValueMap, Value, urldecode, UrlDecodingError}; #[test] fn test_parse_urlencoded_one_key_one_val() { let values = ValueMap::from_urlencoded(b"foo=1").unwrap(); assert_eq!(values.len(), 1); assert_eq!( values.get("foo").unwrap(), &vec![Value::new("1")]); } #[test] fn test_parse_urlencoded_one_key_no_val() { let values = ValueMap::from_urlencoded(b"foo").unwrap(); assert_eq!(values.len(), 1); assert_eq!(values.get("foo").unwrap(), &vec![]); } #[test] fn test_parse_urlencoded_one_key_two_vals() { let values = ValueMap::from_urlencoded(b"foo=1&foo=2").unwrap(); assert_eq!(values.len(), 1); assert_eq!( values.get("foo").unwrap(), &vec![Value::new("1"), Value::new("2")]); } #[test] fn test_parse_urlencoded_two_keys() { let values = ValueMap::from_urlencoded(b"foo=1&bar=2").unwrap(); assert_eq!(values.len(), 2); assert_eq!( values.get("foo").unwrap(), &vec![Value::new("1")]); assert_eq!( values.get("bar").unwrap(), &vec![Value::new("2")]); } #[test] fn test_parse_urlencoded_encoded_correctly() { let values = ValueMap::from_urlencoded(b"foo=foo%20bar").unwrap(); assert_eq!(values.len(), 1); assert_eq!( values.get("foo").unwrap(), &vec![Value::new("foo bar")]); } #[test] fn test_parse_urlencoded_encoded_invalid_char() { assert_eq!( ValueMap::from_urlencoded(b"foo=foo%2xbar"), Err(UrlDecodingError::new("invalid encoding sequence"))); } #[test] fn test_parse_urldecode_plus() { assert_eq!(urldecode(b"foo+bar").unwrap(), "foo bar"); } #[test] fn test_deserialize() { let values = serde_json::from_str::(r#"{"foo":"bar"}"#).unwrap(); assert_eq!(values.values("foo").unwrap(), &vec![Value::new("bar")]); let values = serde_json::from_str::( r#"{"foo":["bar"]}"#).unwrap(); assert_eq!(values.values("foo").unwrap(), &vec![Value::new("bar")]); let values = serde_json::from_str::( r#"{"foo":["bar","baz"]}"#).unwrap(); assert_eq!( values.values("foo").unwrap(), &vec![Value::new("bar"), Value::new("baz")]); let values = serde_json::from_str::(r#"{"foo":123}"#).unwrap(); assert_eq!(values.values("foo").unwrap(), &vec![Value::new("123")]); let values = serde_json::from_str::( r#"{"foo":[123, 456]}"#).unwrap(); assert_eq!( values.values("foo").unwrap(), &vec![Value::new("123"), Value::new("456")]); let values = serde_json::from_str::(r#"{"foo":123.4}"#).unwrap(); assert_eq!(values.values("foo").unwrap(), &vec![Value::new("123.4")]); let values = serde_json::from_str::( r#"{"foo":[123.4, 456.7]}"#).unwrap(); assert_eq!( values.values("foo").unwrap(), &vec![Value::new("123.4"), Value::new("456.7")]); let values = serde_json::from_str::(r#"{"foo":-123}"#).unwrap(); assert_eq!(values.values("foo").unwrap(), &vec![Value::new("-123")]); let values = serde_json::from_str::( r#"{"foo":[-123, -456]}"#).unwrap(); assert_eq!( values.values("foo").unwrap(), &vec![Value::new("-123"), Value::new("-456")]); let values = serde_json::from_str::( r#"{"foo":true,"bar":false}"#).unwrap(); assert_eq!(values.values("foo").unwrap(), &vec![Value::new("on")]); assert_eq!(values.values("bar").unwrap(), &vec![Value::new("off")]); let values = serde_json::from_str::(r#"{"foo":null}"#).unwrap(); assert_eq!(values.values("foo").unwrap(), &vec![]); }