use std::path::Path;
use ek_station::pickfile::{PickListErr, read, write_in};
#[test]
fn p0_roundtrip_and_filter() {
let dir = std::env::temp_dir().join(format!("ek-station-pick-{}", std::process::id()));
let written = write_in(&dir, &["dm", "oms", "ui"]).unwrap();
assert_eq!(read(&written).unwrap(), vec!["dm", "oms", "ui"]);
}
#[test]
fn p1_strict_reader_rules() {
let dir = std::env::temp_dir().join(format!("ek-station-pick-bad-{}", std::process::id()));
std::fs::create_dir_all(&dir).unwrap();
let path = dir.join("bad.list");
std::fs::write(&path, "# c\n\ndm\n a b\noms\n").unwrap();
assert!(matches!(read(&path), Err(PickListErr::BadLine(4, _))));
let empty = dir.join("empty.list");
std::fs::write(&empty, " \n# only\n\n").unwrap();
assert_eq!(read(&empty), Err(PickListErr::Empty));
}
#[test]
fn p2_strict_writer_rules() {
let dir =
Path::new(&std::env::temp_dir()).join(format!("ek-station-pick-w-{}", std::process::id()));
assert_eq!(write_in(&dir, &[]), Err(PickListErr::Empty));
assert!(write_in(&dir, &["dm oms"]).is_err());
let path = write_in(&dir, &["dm"]).unwrap();
assert!(read(&path).unwrap() == vec!["dm"]);
}
#[test]
fn p3_bom_tolerated() {
let dir = std::env::temp_dir().join(format!("ek-station-pick-bom-{}", std::process::id()));
std::fs::create_dir_all(&dir).unwrap();
let path = dir.join("bom.list");
std::fs::write(&path, "\u{feff}# c\ndm\noms\n").unwrap();
assert_eq!(read(&path).unwrap(), vec!["dm", "oms"]);
}