use super::*;
use crate::loc::language::detect;
#[test]
fn mask_python() {
let spec = detect(std::path::Path::new("test.py")).unwrap();
let lines: Vec<String> = vec![
"x = 1", "y = \"\"\"", "def foo():", " return 42", "\"\"\"", "z = 2", ]
.into_iter()
.map(String::from)
.collect();
let mask = multi_line_string_mask(&lines, spec);
assert!(!mask[0]);
assert!(!mask[1]);
assert!(mask[2]);
assert!(mask[3]);
assert!(!mask[4]);
assert!(!mask[5]);
}
#[test]
fn mask_closing_with_code() {
let spec = detect(std::path::Path::new("test.py")).unwrap();
let lines: Vec<String> = vec![
"x = \"\"\"", "docstring", "\"\"\" + y", ]
.into_iter()
.map(String::from)
.collect();
let mask = multi_line_string_mask(&lines, spec);
assert!(!mask[0]);
assert!(mask[1]);
assert!(!mask[2]);
}
#[test]
fn mask_escaped_triple_quotes() {
let spec = detect(std::path::Path::new("test.py")).unwrap();
let lines: Vec<String> = vec![r#"x = """has fake \"\"\" inside""""#, "y = 1 + 2"]
.into_iter()
.map(String::from)
.collect();
let mask = multi_line_string_mask(&lines, spec);
assert!(!mask[0]);
assert!(!mask[1]);
}
#[test]
fn mask_non_triple_language() {
let spec = detect(std::path::Path::new("test.rs")).unwrap();
let lines: Vec<String> = vec!["let x = 1;", "let y = 2;"]
.into_iter()
.map(String::from)
.collect();
let mask = multi_line_string_mask(&lines, spec);
assert!(!mask[0]);
assert!(!mask[1]);
}