melib/percent_encoding: remove doctests, add tests module
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>pull/340/head
parent
ddab3179c2
commit
7952006870
|
@ -29,7 +29,7 @@
|
||||||
//!
|
//!
|
||||||
//! # Examples
|
//! # Examples
|
||||||
//!
|
//!
|
||||||
//! ```rust
|
//! ```rust,no_run
|
||||||
//! use melib::utils::percent_encoding::{
|
//! use melib::utils::percent_encoding::{
|
||||||
//! percent_decode_str, utf8_percent_encode, AsciiSet, CONTROLS,
|
//! percent_decode_str, utf8_percent_encode, AsciiSet, CONTROLS,
|
||||||
//! };
|
//! };
|
||||||
|
@ -57,7 +57,7 @@ use std::{borrow::Cow, mem, slice, str};
|
||||||
///
|
///
|
||||||
/// Use the `add` method of an existing set to define a new set. For example:
|
/// Use the `add` method of an existing set to define a new set. For example:
|
||||||
///
|
///
|
||||||
/// ```rust
|
/// ```rust,no_run
|
||||||
/// use melib::utils::percent_encoding::{AsciiSet, CONTROLS};
|
/// use melib::utils::percent_encoding::{AsciiSet, CONTROLS};
|
||||||
///
|
///
|
||||||
/// /// https://url.spec.whatwg.org/#fragment-percent-encode-set
|
/// /// https://url.spec.whatwg.org/#fragment-percent-encode-set
|
||||||
|
@ -493,3 +493,72 @@ fn decode_utf8_lossy(input: Cow<'_, [u8]>) -> Cow<'_, str> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
/// https://url.spec.whatwg.org/#fragment-percent-encode-set
|
||||||
|
const FRAGMENT: &AsciiSet = &NON_ALPHANUMERIC
|
||||||
|
.add(b' ')
|
||||||
|
.add(b'"')
|
||||||
|
.add(b'<')
|
||||||
|
.add(b'>')
|
||||||
|
.add(b'`');
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_url_percent() {
|
||||||
|
assert_eq!(
|
||||||
|
utf8_percent_encode("foo <bar>", FRAGMENT).to_string(),
|
||||||
|
"foo%20%3Cbar%3E"
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
utf8_percent_encode("Betty's favorite language is Français", FRAGMENT).to_string(),
|
||||||
|
"Betty%27s%20favorite%20language%20is%20Fran%C3%A7ais"
|
||||||
|
);
|
||||||
|
// Roundtrip
|
||||||
|
assert_eq!(
|
||||||
|
percent_decode_str(
|
||||||
|
&utf8_percent_encode("Betty's favorite language is Français", FRAGMENT).to_string()
|
||||||
|
)
|
||||||
|
.decode_utf8()
|
||||||
|
.unwrap(),
|
||||||
|
"Betty's favorite language is Français"
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
percent_decode_str("foo%20%3Cbar%3E").decode_utf8().unwrap(),
|
||||||
|
"foo <bar>"
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
utf8_percent_encode("(45 * 2) + 90", FRAGMENT).to_string(),
|
||||||
|
"%2845%20%2A%202%29%20%2B%2090"
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
utf8_percent_encode("`console.log(value); if (!foo) { _bar(): }`", FRAGMENT)
|
||||||
|
.to_string(),
|
||||||
|
"%60console%2Elog%28value%29%3B%20if%20%28%21foo%29%20%7B%20%5Fbar%28%29%3A%20%7D%60"
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
utf8_percent_encode("\"it will all be alright !\", he said.", FRAGMENT).to_string(),
|
||||||
|
"%22it%20will%20all%20be%20alright%20%21%22%2C%20he%20said%2E"
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
percent_decode_str("a%C3%A7%C3%BAcar")
|
||||||
|
.decode_utf8()
|
||||||
|
.unwrap(),
|
||||||
|
"açúcar"
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
percent_decode_str("tor%C3%A7ut").decode_utf8().unwrap(),
|
||||||
|
"torçut"
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
percent_decode_str("JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B")
|
||||||
|
.decode_utf8()
|
||||||
|
.unwrap(),
|
||||||
|
"JavaScript_шеллы"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue