diff --git a/base/src/test/user_model/test_row_column.rs b/base/src/test/user_model/test_row_column.rs index 5ddfe93..e138345 100644 --- a/base/src/test/user_model/test_row_column.rs +++ b/base/src/test/user_model/test_row_column.rs @@ -172,3 +172,42 @@ fn row_heigh_increases_automatically() { .unwrap(); assert_eq!(model.get_row_height(0, 1), Ok(2.0 * DEFAULT_ROW_HEIGHT)); } + +#[test] +fn insert_row_evaluates() { + let model = new_empty_model(); + let mut model = UserModel::from_model(model); + model.set_user_input(0, 1, 1, "42").unwrap(); + model.set_user_input(0, 1, 2, "=A1*2").unwrap(); + + assert!(model.insert_row(0, 1).is_ok()); + assert_eq!(model.get_formatted_cell_value(0, 2, 2).unwrap(), "84"); + model.undo().unwrap(); + assert_eq!(model.get_formatted_cell_value(0, 1, 2).unwrap(), "84"); + model.redo().unwrap(); + assert_eq!(model.get_formatted_cell_value(0, 2, 2).unwrap(), "84"); + + model.delete_row(0, 1).unwrap(); + assert_eq!(model.get_formatted_cell_value(0, 1, 2).unwrap(), "84"); + assert_eq!(model.get_cell_content(0, 1, 2).unwrap(), "=A1*2"); +} + +#[test] +fn insert_column_evaluates() { + let model = new_empty_model(); + let mut model = UserModel::from_model(model); + model.set_user_input(0, 1, 1, "42").unwrap(); + model.set_user_input(0, 10, 1, "=A1*2").unwrap(); + + assert!(model.insert_column(0, 1).is_ok()); + assert_eq!(model.get_formatted_cell_value(0, 10, 2).unwrap(), "84"); + + model.undo().unwrap(); + assert_eq!(model.get_formatted_cell_value(0, 10, 1).unwrap(), "84"); + model.redo().unwrap(); + assert_eq!(model.get_formatted_cell_value(0, 10, 2).unwrap(), "84"); + + model.delete_column(0, 1).unwrap(); + assert_eq!(model.get_formatted_cell_value(0, 10, 1).unwrap(), "84"); + assert_eq!(model.get_cell_content(0, 10, 1).unwrap(), "=A1*2"); +} diff --git a/base/src/user_model/common.rs b/base/src/user_model/common.rs index a98b064..c68bbbb 100644 --- a/base/src/user_model/common.rs +++ b/base/src/user_model/common.rs @@ -843,7 +843,9 @@ impl UserModel { pub fn insert_row(&mut self, sheet: u32, row: i32) -> Result<(), String> { let diff_list = vec![Diff::InsertRow { sheet, row }]; self.push_diff_list(diff_list); - self.model.insert_rows(sheet, row, 1) + self.model.insert_rows(sheet, row, 1)?; + self.evaluate_if_not_paused(); + Ok(()) } /// Deletes a row @@ -873,7 +875,9 @@ impl UserModel { old_data, }]; self.push_diff_list(diff_list); - self.model.delete_rows(sheet, row, 1) + self.model.delete_rows(sheet, row, 1)?; + self.evaluate_if_not_paused(); + Ok(()) } /// Inserts a column @@ -883,7 +887,9 @@ impl UserModel { pub fn insert_column(&mut self, sheet: u32, column: i32) -> Result<(), String> { let diff_list = vec![Diff::InsertColumn { sheet, column }]; self.push_diff_list(diff_list); - self.model.insert_columns(sheet, column, 1) + self.model.insert_columns(sheet, column, 1)?; + self.evaluate_if_not_paused(); + Ok(()) } /// Deletes a column @@ -928,7 +934,9 @@ impl UserModel { }), }]; self.push_diff_list(diff_list); - self.model.delete_columns(sheet, column, 1) + self.model.delete_columns(sheet, column, 1)?; + self.evaluate_if_not_paused(); + Ok(()) } /// Sets the width of a column