use stern4rust::source_file::SourceFile;
#[test]
fn is_empty_of_a_file_holding_only_whitespace_returns_true() {
let file = SourceFile::new("src/a.rs", "\n \n\t\n");
assert!(file.is_empty());
}
#[test]
fn is_empty_of_a_file_with_no_contents_returns_true() {
let file = SourceFile::new("src/a.rs", "");
assert!(file.is_empty());
}
#[test]
fn is_empty_of_a_file_with_one_line_of_content_returns_false() {
let file = SourceFile::new("src/a.rs", "// header\n");
assert!(!file.is_empty());
}
#[test]
fn new_keeps_a_byte_order_mark_that_is_not_at_the_start() {
let file = SourceFile::new("src/a.rs", "// header\n\u{feff}second");
assert_eq!(file.lines()[1], "\u{feff}second");
}
#[test]
fn new_reports_a_windows_path_with_forward_slashes() {
let file = SourceFile::new("src\\rules\\header_rule.rs", "");
assert_eq!(file.relative_path(), "src/rules/header_rule.rs");
}
#[test]
fn new_splits_the_contents_into_lines() {
let file = SourceFile::new("src/a.rs", "one\ntwo\nthree");
assert_eq!(file.lines(), ["one", "two", "three"]);
}
#[test]
fn new_strips_a_leading_byte_order_mark() {
let file = SourceFile::new("src/a.rs", "\u{feff}// header");
assert_eq!(file.lines()[0], "// header");
}
#[test]
fn new_strips_the_carriage_return_from_windows_line_endings() {
let file = SourceFile::new("src/a.rs", "one\r\ntwo\r\n");
assert_eq!(file.lines()[0], "one");
assert_eq!(file.lines()[1], "two");
}