#[cfg(test)]
mod url_tests {
use crate::Url;
#[test]
fn test_is_escaped_valid_sequences() {
let valid_escapes = [
"%20", "%22", "%25", "%60", "%3c", "%3C", "%3e", "%3E", "%5b", "%5B", "%5d", "%5D", "%5e", "%5E", "%7b", "%7B", "%7d", "%7D", ];
for escape in &valid_escapes {
assert!(Url::is_escaped(escape), "Failed for: {}", escape);
let url = format!("http://example.com/test{}", escape);
assert!(Url::is_escaped(&url), "Failed for URL: {}", url);
}
}
#[test]
fn test_is_escaped_no_percent() {
assert!(!Url::is_escaped("https://www.example.com"));
assert!(!Url::is_escaped("http://example.com/path"));
assert!(!Url::is_escaped("file:///C:/temp/file.xlsx"));
assert!(!Url::is_escaped("internal:Sheet1!A1"));
assert!(!Url::is_escaped(""));
assert!(!Url::is_escaped("simple string"));
}
#[test]
fn test_is_escaped_percent_not_escape_sequence() {
assert!(!Url::is_escaped("http://example.com/test%"));
assert!(!Url::is_escaped("http://example.com/test%1"));
assert!(!Url::is_escaped("http://example.com/test%AB"));
assert!(!Url::is_escaped("http://example.com/test%99"));
assert!(!Url::is_escaped("http://example.com/test%FF"));
assert!(!Url::is_escaped("discount%off"));
}
}