use super::*;
#[test]
fn undo_after_visual_delete() {
let mut e = Editor::new(Buffer::from_text("say \"hi\" now\n"));
e.feed_text("ved"); assert_eq!(e.buf().text().to_string(), " \"hi\" now\n");
e.feed_text("u");
assert_eq!(e.buf().text().to_string(), "say \"hi\" now\n");
}
#[test]
fn quote_object_scans_forward_on_the_line() {
let mut e = Editor::new(Buffer::from_text("say \"hi\" now\n"));
e.feed_text("vi\"");
let r = e.visual_range().expect("selection");
assert_eq!(e.buf().slice_string(r), "hi");
}
#[test]
fn quit_leaves_editor_drain_safe() {
let mut e = Editor::new(Buffer::from_text("x\n"));
e.feed_text(":q!\r");
assert!(e.should_quit);
assert!(e.docs.is_empty());
e.drain_picker();
e.drain_git_jobs();
e.drain_lsp();
e.lsp_sync_changed();
}
#[test]
fn undo_lands_cursor_at_change_start() {
let mut e = Editor::new(Buffer::from_text("hello\n"));
e.feed_text("A world");
e.feed(crate::editor::Key::Esc);
e.feed_text("0"); e.feed_text("u");
assert_eq!(e.buf().text().to_string(), "hello\n");
assert_eq!(e.head(), 4);
}