use file_editor::Editor;
#[test]
fn edge_branches() -> std::io::Result<()> {
let dir = tempfile::tempdir()?;
let p_inline2 = dir.path().join("inline2.txt");
Editor::create(&p_inline2)?
.append("GREETING|world")
.insert_after("|", " there", false) .save()?;
assert_eq!(std::fs::read_to_string(&p_inline2)?, "GREETING| thereworld");
let p_inline = dir.path().join("inline.txt");
Editor::create(&p_inline)?
.append("START|END")
.insert_after("|", "_MID_", false) .save()?;
assert_eq!(std::fs::read_to_string(&p_inline)?, "START| _MID_END");
let p_block = dir.path().join("block.txt");
Editor::create(&p_block)?
.append("if cond {\n body()\n}\n")
.insert_after(
"{",
"\nprintln!(\"x\");\nprintln!(\"y\");", true, )
.save()?;
let out = std::fs::read_to_string(&p_block)?;
assert!(out.starts_with("if cond {\n"));
assert!(out.contains("println!(\"x\");"));
assert!(out.contains("println!(\"y\");"));
assert!(out.trim_end().ends_with("}"));
let mut ed = Editor::open(&p_inline)?;
ed.erase("does-not-exist");
ed.save()?;
assert_eq!(ed.find_lines("MID", None), vec![1]);
Ok(())
}