use editor_core::{Command, CommandExecutor, CursorCommand, Position};
#[test]
fn test_move_to_visual_in_wrapped_line() {
let mut executor = CommandExecutor::new("abcdefghij", 5);
executor
.execute(Command::Cursor(CursorCommand::MoveToVisual {
row: 1,
x_cells: 1,
}))
.unwrap();
assert_eq!(executor.editor().cursor_position(), Position::new(0, 6));
}
#[test]
fn test_move_visual_by_sticky_x_across_visual_rows() {
let mut executor = CommandExecutor::new("abcdefghij\n123", 5);
executor
.execute(Command::Cursor(CursorCommand::MoveTo {
line: 0,
column: 4,
}))
.unwrap();
assert_eq!(executor.editor().cursor_position(), Position::new(0, 4));
executor
.execute(Command::Cursor(CursorCommand::MoveVisualBy {
delta_rows: 1,
}))
.unwrap();
assert_eq!(executor.editor().cursor_position(), Position::new(0, 9));
executor
.execute(Command::Cursor(CursorCommand::MoveVisualBy {
delta_rows: 1,
}))
.unwrap();
assert_eq!(executor.editor().cursor_position(), Position::new(1, 3));
executor
.execute(Command::Cursor(CursorCommand::MoveVisualBy {
delta_rows: -1,
}))
.unwrap();
assert_eq!(executor.editor().cursor_position(), Position::new(0, 9));
}
#[test]
fn test_move_to_visual_line_start_end() {
let mut executor = CommandExecutor::new("abcdefghij", 5);
executor
.execute(Command::Cursor(CursorCommand::MoveToVisual {
row: 1,
x_cells: 2,
}))
.unwrap();
assert_eq!(executor.editor().cursor_position(), Position::new(0, 7));
executor
.execute(Command::Cursor(CursorCommand::MoveToVisualLineStart))
.unwrap();
assert_eq!(executor.editor().cursor_position(), Position::new(0, 5));
executor
.execute(Command::Cursor(CursorCommand::MoveToVisualLineEnd))
.unwrap();
assert_eq!(executor.editor().cursor_position(), Position::new(0, 10));
}