Compare commits

..

No commits in common. "98143ddc55a33c2ac2015521dae1086f9fa1bcc7" and "28ce80211681c7a9c4ae8301523ebe6e6b76455a" have entirely different histories.

1 changed files with 80 additions and 36 deletions

View File

@ -142,14 +142,6 @@ mod tests {
use std::io::{Read, Seek, SeekFrom, Write};
use tempfile::NamedTempFile;
macro_rules! test_command {
( $editor_buffer:ident, $command:expr ) => {
let result = $editor_buffer.execute($command);
assert!(result.is_ok());
let $editor_buffer = result.buffer;
}
}
fn create_simple_test_file() -> NamedTempFile {
let inner = || {
let mut file = NamedTempFile::new()?;
@ -181,8 +173,8 @@ mod tests {
.read_to_string(&mut expected_contents)
.expect("Reading text file");
let target = EditorBuffer::new();
test_command!(target, Command::OpenFile(test_file.path().into()));
let found_contents: String = target.buffer.iter_chars().collect();
let result = target.execute(Command::OpenFile(test_file.path().into()));
let found_contents: String = result.buffer.buffer.iter_chars().collect();
assert_eq!(expected_contents, found_contents);
}
@ -198,12 +190,20 @@ mod tests {
fn move_cursor_to_point_in_file() {
let test_file = create_simple_test_file();
let target = EditorBuffer::new();
test_command!(target, Command::OpenFile(test_file.path().into()));
test_command!(target, Command::MoveCursorTo(Point::LineColumn(0, 5)));
let result = target.execute(Command::OpenFile(test_file.path().into()));
assert!(result.is_ok());
let target = result.buffer;
let result = target.execute(Command::MoveCursorTo(Point::LineColumn(0, 5)));
assert!(result.is_ok());
let target = result.buffer;
assert_eq!(Point::LineColumn(0, 5), target.get_cursor_position());
test_command!(target, Command::MoveCursorTo(Point::LineColumn(3, 11)));
let result = target.execute(Command::MoveCursorTo(Point::LineColumn(3, 11)));
assert!(result.is_ok());
let target = result.buffer;
assert_eq!(Point::LineColumn(3, 11), target.get_cursor_position());
test_command!(target, Command::MoveCursorTo(Point::LineColumn(3, 0)));
let result = target.execute(Command::MoveCursorTo(Point::LineColumn(3, 0)));
assert!(result.is_ok());
let target = result.buffer;
assert_eq!(Point::LineColumn(3, 0), target.get_cursor_position());
}
@ -219,9 +219,15 @@ mod tests {
expected_lines[2] = "Xbíth a menmasam fri seilgg";
let expected_lines = expected_lines;
let target = EditorBuffer::new();
test_command!(target, Command::OpenFile(test_file.path().into()));
test_command!(target, Command::MoveCursorTo(Point::LineColumn(3, 0)));
test_command!(target, Command::InsertChar('X'));
let result = target.execute(Command::OpenFile(test_file.path().into()));
assert!(result.is_ok());
let target = result.buffer;
let result = target.execute(Command::MoveCursorTo(Point::LineColumn(3, 0)));
assert!(result.is_ok());
let target = result.buffer;
let result = target.execute(Command::InsertChar('X'));
assert!(result.is_ok());
let target = result.buffer;
let found_lines: Vec<String> = target
.buffer
.iter_chars()
@ -241,9 +247,15 @@ mod tests {
expected_lines[2] = "bXíth a menmasam fri seilgg";
let expected_lines = expected_lines;
let target = EditorBuffer::new();
test_command!(target, Command::OpenFile(test_file.path().into()));
test_command!(target, Command::MoveCursorTo(Point::LineColumn(3, 1)));
test_command!(target, Command::InsertChar('X'));
let result = target.execute(Command::OpenFile(test_file.path().into()));
assert!(result.is_ok());
let target = result.buffer;
let result = target.execute(Command::MoveCursorTo(Point::LineColumn(3, 1)));
assert!(result.is_ok());
let target = result.buffer;
let result = target.execute(Command::InsertChar('X'));
assert!(result.is_ok());
let target = result.buffer;
let found_lines: Vec<String> = target
.buffer
.iter_chars()
@ -263,9 +275,15 @@ mod tests {
expected_lines[2] = "bíXth a menmasam fri seilgg";
let expected_lines = expected_lines;
let target = EditorBuffer::new();
test_command!(target, Command::OpenFile(test_file.path().into()));
test_command!(target, Command::MoveCursorTo(Point::LineColumn(3, 2)));
test_command!(target, Command::InsertChar('X'));
let result = target.execute(Command::OpenFile(test_file.path().into()));
assert!(result.is_ok());
let target = result.buffer;
let result = target.execute(Command::MoveCursorTo(Point::LineColumn(3, 2)));
assert!(result.is_ok());
let target = result.buffer;
let result = target.execute(Command::InsertChar('X'));
assert!(result.is_ok());
let target = result.buffer;
let found_lines: Vec<String> = target
.buffer
.iter_chars()
@ -285,9 +303,15 @@ mod tests {
expected_lines[2] = "bíth a menmXasam fri seilgg";
let expected_lines = expected_lines;
let target = EditorBuffer::new();
test_command!(target, Command::OpenFile(test_file.path().into()));
test_command!(target, Command::MoveCursorTo(Point::LineColumn(3, 11)));
test_command!(target, Command::InsertChar('X'));
let result = target.execute(Command::OpenFile(test_file.path().into()));
assert!(result.is_ok());
let target = result.buffer;
let result = target.execute(Command::MoveCursorTo(Point::LineColumn(3, 11)));
assert!(result.is_ok());
let target = result.buffer;
let result = target.execute(Command::InsertChar('X'));
assert!(result.is_ok());
let target = result.buffer;
let found_lines: Vec<String> = target
.buffer
.iter_chars()
@ -310,16 +334,36 @@ mod tests {
expected_lines.insert(6, "abc 123".into());
let target = EditorBuffer::new();
test_command!(target, Command::OpenFile(test_file.path().into()));
test_command!(target, Command::MoveCursorToLine(7));
test_command!(target, Command::InsertChar('a'));
test_command!(target, Command::InsertChar('b'));
test_command!(target, Command::InsertChar('c'));
test_command!(target, Command::InsertChar(' '));
test_command!(target, Command::InsertChar('1'));
test_command!(target, Command::InsertChar('2'));
test_command!(target, Command::InsertChar('3'));
test_command!(target, Command::InsertChar('\n'));
let result = target.execute(Command::OpenFile(test_file.path().into()));
assert!(result.is_ok());
let target = result.buffer;
let result = target.execute(Command::MoveCursorToLine(7));
assert!(result.is_ok());
let target = result.buffer;
let result = target.execute(Command::InsertChar('a'));
assert!(result.is_ok());
let target = result.buffer;
let result = target.execute(Command::InsertChar('b'));
assert!(result.is_ok());
let target = result.buffer;
let result = target.execute(Command::InsertChar('c'));
assert!(result.is_ok());
let target = result.buffer;
let result = target.execute(Command::InsertChar(' '));
assert!(result.is_ok());
let target = result.buffer;
let result = target.execute(Command::InsertChar('1'));
assert!(result.is_ok());
let target = result.buffer;
let result = target.execute(Command::InsertChar('2'));
assert!(result.is_ok());
let target = result.buffer;
let result = target.execute(Command::InsertChar('3'));
assert!(result.is_ok());
let target = result.buffer;
let result = target.execute(Command::InsertChar('\n'));
assert!(result.is_ok());
let target = result.buffer;
let found_lines: Vec<String> = target
.buffer
.iter_chars()