use langmail::preprocess;
const RAW: &[u8] = include_bytes!("fixtures/linear-login.eml");
const INVISIBLE_CHARS: &[char] = &[
'\u{034F}', '\u{200B}', '\u{200C}', '\u{200D}', '\u{FEFF}', '\u{00AD}', '\u{2007}', ];
#[test]
fn no_invisible_characters() {
let output = preprocess(RAW).unwrap();
for c in INVISIBLE_CHARS {
assert!(
!output.body.contains(*c),
"body contains invisible char U+{:04X}",
*c as u32
);
}
}
#[test]
fn no_whitespace_only_lines() {
let output = preprocess(RAW).unwrap();
for (i, line) in output.body.lines().enumerate() {
assert!(
line.is_empty() || !line.trim().is_empty(),
"line {} is whitespace-only: {:?}",
i + 1,
line
);
}
}
#[test]
fn no_excessive_empty_lines() {
let output = preprocess(RAW).unwrap();
assert!(
!output.body.contains("\n\n\n"),
"body contains 3+ consecutive newlines:\n{}",
output.body
);
}
#[test]
fn content_preserved() {
let output = preprocess(RAW).unwrap();
assert!(
output.body.contains("New login to Max"),
"missing 'New login to Max'"
);
assert!(
output.body.contains("Platform: Max Desktop on macOS"),
"missing platform info"
);
assert!(
output.body.contains("Munich, BY, DE"),
"missing location info"
);
assert!(
output.body.contains("Security & access"),
"missing security link text"
);
}