use crate::testing_prelude::*;
#[test]
fn sanitizer_name_restricted_chars() {
let input = format!(
"Artist - Album ze{}ro () [2009]",
SanitizerChar::ZeroWidthNoBreakSpace.get_char()
);
let result = Sanitizer::name().execute(input);
assert_eq!(result, "Artist - Album zero () [2009]");
}
#[test]
fn sanitizer_name_dividers() {
let input = "Artist - Album ze-ro () [2009]".to_owned();
let result = Sanitizer::name().execute(input);
assert_eq!(result, "Artist - Album ze-ro () [2009]");
}
#[test]
fn sanitizer_name_en_dash() {
let input = format!(
"Artist {} Album zero () [2009]",
SanitizerChar::EnDash.get_char()
);
let result = Sanitizer::name().execute(input);
assert_eq!(result, "Artist - Album zero () [2009]");
}
#[test]
fn sanitizer_name_directional() {
let input = "Artist\u{200E} - Album\u{2066} zero () [2009]".to_owned();
let result = Sanitizer::name().execute(input);
assert_eq!(result, "Artist - Album zero () [2009]");
}
#[test]
fn sanitizer_name_valid_unicode() {
let input = "안녕하세요 세상 - 你好世界 - こんにちは世界".to_owned();
let result = Sanitizer::name().execute(input.clone());
assert_eq!(result, input);
}
#[test]
fn sanitizer_name_valid_emoji() {
let input = "⚡ 💻 🧠 👨💻 👨 💊 ☝️ 🛜 ".to_owned();
let result = Sanitizer::name().execute(input.clone());
assert_eq!(result, input);
}
#[test]
fn sanitizer_libtorrent_no_change() {
assert_eq!(
Sanitizer::libtorrent().execute("no change".to_owned()),
"no change"
);
}
#[test]
fn sanitizer_libtorrent_strips_slashes() {
let sanitizer = Sanitizer::libtorrent();
assert_eq!(sanitizer.execute("AC/DC".to_owned()), "ACDC");
assert_eq!(sanitizer.execute(r"back\slash".to_owned()), "backslash");
}
#[test]
fn sanitizer_libtorrent_strips_directional_marks() {
let sanitizer = Sanitizer::libtorrent();
assert_eq!(sanitizer.execute("a\u{200e}b\u{200f}c".to_owned()), "abc");
assert_eq!(
sanitizer.execute("Hello\u{202a}\u{202b}\u{202c}\u{202d}\u{202e}World".to_owned()),
"HelloWorld"
);
}
#[test]
fn sanitizer_libtorrent_empty() {
assert_eq!(Sanitizer::libtorrent().execute(String::new()), "");
}