From ea49d93e145a1f3013d118719a06ac4e40036984 Mon Sep 17 00:00:00 2001 From: Matthew Gordon Date: Thu, 27 Nov 2025 21:46:53 -0400 Subject: [PATCH] Factor out repeated code in EditorBuffer tests --- core/src/editor_buffer/mod.rs | 114 ++++++++++------------------------ 1 file changed, 34 insertions(+), 80 deletions(-) diff --git a/core/src/editor_buffer/mod.rs b/core/src/editor_buffer/mod.rs index 9cc09d9..9a75195 100644 --- a/core/src/editor_buffer/mod.rs +++ b/core/src/editor_buffer/mod.rs @@ -142,6 +142,12 @@ mod tests { use std::io::{Read, Seek, SeekFrom, Write}; use tempfile::NamedTempFile; + fn test_command(editor_buffer: EditorBuffer, command: Command) -> EditorBuffer { + let result = editor_buffer.execute(command); + assert!(result.is_ok()); + result.buffer + } + fn create_simple_test_file() -> NamedTempFile { let inner = || { let mut file = NamedTempFile::new()?; @@ -173,8 +179,8 @@ mod tests { .read_to_string(&mut expected_contents) .expect("Reading text file"); let target = EditorBuffer::new(); - let result = target.execute(Command::OpenFile(test_file.path().into())); - let found_contents: String = result.buffer.buffer.iter_chars().collect(); + let target = test_command(target, Command::OpenFile(test_file.path().into())); + let found_contents: String = target.buffer.iter_chars().collect(); assert_eq!(expected_contents, found_contents); } @@ -190,20 +196,12 @@ mod tests { fn move_cursor_to_point_in_file() { let test_file = create_simple_test_file(); let target = EditorBuffer::new(); - 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; + let target = test_command(target, Command::OpenFile(test_file.path().into())); + let target = test_command(target, Command::MoveCursorTo(Point::LineColumn(0, 5))); assert_eq!(Point::LineColumn(0, 5), target.get_cursor_position()); - let result = target.execute(Command::MoveCursorTo(Point::LineColumn(3, 11))); - assert!(result.is_ok()); - let target = result.buffer; + let target = test_command(target, Command::MoveCursorTo(Point::LineColumn(3, 11))); assert_eq!(Point::LineColumn(3, 11), target.get_cursor_position()); - let result = target.execute(Command::MoveCursorTo(Point::LineColumn(3, 0))); - assert!(result.is_ok()); - let target = result.buffer; + let target = test_command(target, Command::MoveCursorTo(Point::LineColumn(3, 0))); assert_eq!(Point::LineColumn(3, 0), target.get_cursor_position()); } @@ -219,15 +217,9 @@ mod tests { expected_lines[2] = "Xbíth a menmasam fri seilgg"; let expected_lines = expected_lines; let target = EditorBuffer::new(); - 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 target = test_command(target, Command::OpenFile(test_file.path().into())); + let target = test_command(target, Command::MoveCursorTo(Point::LineColumn(3, 0))); + let target = test_command(target, Command::InsertChar('X')); let found_lines: Vec = target .buffer .iter_chars() @@ -247,15 +239,9 @@ mod tests { expected_lines[2] = "bXíth a menmasam fri seilgg"; let expected_lines = expected_lines; let target = EditorBuffer::new(); - 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 target = test_command(target, Command::OpenFile(test_file.path().into())); + let target = test_command(target, Command::MoveCursorTo(Point::LineColumn(3, 1))); + let target = test_command(target, Command::InsertChar('X')); let found_lines: Vec = target .buffer .iter_chars() @@ -275,15 +261,9 @@ mod tests { expected_lines[2] = "bíXth a menmasam fri seilgg"; let expected_lines = expected_lines; let target = EditorBuffer::new(); - 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 target = test_command(target, Command::OpenFile(test_file.path().into())); + let target = test_command(target, Command::MoveCursorTo(Point::LineColumn(3, 2))); + let target = test_command(target, Command::InsertChar('X')); let found_lines: Vec = target .buffer .iter_chars() @@ -303,15 +283,9 @@ mod tests { expected_lines[2] = "bíth a menmXasam fri seilgg"; let expected_lines = expected_lines; let target = EditorBuffer::new(); - 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 target = test_command(target, Command::OpenFile(test_file.path().into())); + let target = test_command(target, Command::MoveCursorTo(Point::LineColumn(3, 11))); + let target = test_command(target, Command::InsertChar('X')); let found_lines: Vec = target .buffer .iter_chars() @@ -334,36 +308,16 @@ mod tests { expected_lines.insert(6, "abc 123".into()); let target = EditorBuffer::new(); - 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 target = test_command(target, Command::OpenFile(test_file.path().into())); + let target = test_command(target, Command::MoveCursorToLine(7)); + let target = test_command(target, Command::InsertChar('a')); + let target = test_command(target, Command::InsertChar('b')); + let target = test_command(target, Command::InsertChar('c')); + let target = test_command(target, Command::InsertChar(' ')); + let target = test_command(target, Command::InsertChar('1')); + let target = test_command(target, Command::InsertChar('2')); + let target = test_command(target, Command::InsertChar('3')); + let target = test_command(target, Command::InsertChar('\n')); let found_lines: Vec = target .buffer .iter_chars()