Compare commits

..

16 Commits

Author SHA1 Message Date
d50c12a5ba
Merge pull request #20 from zaphar/test_coverage
Test coverage for most keybinds
2025-01-07 19:05:04 -05:00
b38af78ad7 wip: InputScript constructor helper 2025-01-07 19:03:28 -05:00
c3ab2b72de wip: test coverage for extend to range 2025-01-07 18:58:04 -05:00
61e9a4631f wip: test coverage for range select 2025-01-06 21:08:14 -05:00
7de19e8e3b chore: utility function for making a workspace 2025-01-01 10:01:25 -05:00
10d35ab0d6 wip: test coverage for handle_edit_input 2024-12-31 15:40:23 -05:00
a65ad974ce wip: test coverage for handle_dialog_input 2024-12-29 20:04:19 -05:00
19d01f057b chore: cleanup the rest of out inputscript usage 2024-12-29 19:34:02 -05:00
282df18177 wip: test coverage for all movement keys 2024-12-29 19:22:34 -05:00
babe2525a0 chore: Move InputScript to the top
add alt helper method
2024-12-29 19:21:25 -05:00
7bbdc26f13 chore: makefile adjustments 2024-12-29 19:15:31 -05:00
92b02eea78 wip: test coverage for cell replacement 2024-12-29 19:13:05 -05:00
247674530b chore: refator InputScript api for ergonomics 2024-12-29 19:12:58 -05:00
e984d7324c wip: test coverage for
* sheet navigation
* column sizing
* quit
2024-12-28 10:53:59 -05:00
52d1909868 wip: add test for cell deletion 2024-12-28 10:53:59 -05:00
c5cbc1e75c wip: test coverage for copy paste 2024-12-28 10:53:59 -05:00
4 changed files with 830 additions and 152 deletions

1
.gitignore vendored
View File

@ -2,3 +2,4 @@
result/
*.json
tarpaulin-report.*
*.profraw

View File

@ -8,7 +8,7 @@ build: $(rust-files)
cargo build
tarpaulin-report.%: $(rust_files)
cargo tarpaulin --skip-clean --test --out $*
cargo tarpaulin --skip-clean --engine llvm --out $*
cover: tarpaulin-report.html

View File

@ -549,7 +549,9 @@ impl<'ws> Workspace<'ws> {
self.maybe_update_range_end();
}
KeyCode::Char(' ') | KeyCode::Enter => {
self.update_range_selection()?;
if self.update_range_selection()? {
self.exit_range_select_mode()?;
}
}
KeyCode::Char('n') if key.modifiers == KeyModifiers::CONTROL => {
self.state.range_select.reset_range_selection();
@ -570,16 +572,24 @@ impl<'ws> Workspace<'ws> {
KeyCode::Char('C')
if key
.modifiers
.contains(KeyModifiers::CONTROL | KeyModifiers::SHIFT) =>
.contains(KeyModifiers::CONTROL) =>
{
// TODO(zaphar): Share the algorithm below between both copies
self.copy_range(true)?;
self.exit_range_select_mode()?;
}
KeyCode::Char('Y') => {
self.copy_range(true)?;
self.exit_range_select_mode()?;
}
KeyCode::Char('Y') => self.copy_range(true)?,
KeyCode::Char('c') if key.modifiers == KeyModifiers::CONTROL => {
self.copy_range(false)?;
self.exit_range_select_mode()?;
}
KeyCode::Char('y') => {
self.copy_range(false)?;
self.exit_range_select_mode()?;
}
KeyCode::Char('y') => self.copy_range(false)?,
KeyCode::Char('x') => {
if let (Some(from), Some(to)) = (self.state.range_select.start.as_ref(), self.state.range_select.end.as_ref()) {
self.book.extend_to(from, to)?;
@ -627,17 +637,17 @@ impl<'ws> Workspace<'ws> {
}));
}
}
self.exit_range_select_mode()?;
Ok(())
}
fn update_range_selection(&mut self) -> Result<(), anyhow::Error> {
fn update_range_selection(&mut self) -> Result<bool, anyhow::Error> {
Ok(if self.state.range_select.start.is_none() {
self.state.range_select.start = Some(self.book.location.clone());
self.state.range_select.end = Some(self.book.location.clone());
false
} else {
self.state.range_select.end = Some(self.book.location.clone());
self.exit_range_select_mode()?;
true
})
}
@ -692,7 +702,7 @@ impl<'ws> Workspace<'ws> {
KeyCode::Char('C')
if key
.modifiers
.contains(KeyModifiers::CONTROL | KeyModifiers::SHIFT) =>
.contains(KeyModifiers::CONTROL) =>
{
self.state.clipboard = Some(ClipboardContents::Cell(
self.book.get_current_cell_rendered()?,

File diff suppressed because it is too large Load Diff