* bump version for documentation * Fixes wrong doc comment * renames old APIs to be consistent
67 lines
2.2 KiB
Rust
67 lines
2.2 KiB
Rust
#![allow(clippy::unwrap_used)]
|
|
|
|
use crate::{test::util::new_empty_model, UserModel};
|
|
|
|
#[test]
|
|
fn simple_undo_redo() {
|
|
let model = new_empty_model();
|
|
let mut model = UserModel::from_model(model);
|
|
// at the beginning I cannot undo or redo
|
|
assert!(!model.can_undo());
|
|
assert!(!model.can_redo());
|
|
assert!(model.set_user_input(0, 1, 1, "=1+2").is_ok());
|
|
|
|
// Once I enter a value I can undo but not redo
|
|
assert!(model.can_undo());
|
|
assert!(!model.can_redo());
|
|
assert_eq!(model.get_formatted_cell_value(0, 1, 1), Ok("3".to_string()));
|
|
|
|
// If I undo, I can't undo anymore, but I can redo
|
|
assert!(model.undo().is_ok());
|
|
assert!(!model.can_undo());
|
|
assert!(model.can_redo());
|
|
assert_eq!(model.get_formatted_cell_value(0, 1, 1), Ok("".to_string()));
|
|
|
|
// If I redo, I have the old value and formula
|
|
assert!(model.redo().is_ok());
|
|
assert_eq!(model.get_formatted_cell_value(0, 1, 1), Ok("3".to_string()));
|
|
assert_eq!(model.get_cell_content(0, 1, 1), Ok("=1+2".to_string()));
|
|
assert!(model.can_undo());
|
|
assert!(!model.can_redo());
|
|
}
|
|
|
|
#[test]
|
|
fn undo_redo_respect_styles() {
|
|
let model = new_empty_model();
|
|
let mut model = UserModel::from_model(model);
|
|
assert!(model.set_user_input(0, 1, 1, "100").is_ok());
|
|
assert!(model.set_user_input(0, 1, 1, "125$").is_ok());
|
|
// The content of the cell is just the number 125
|
|
assert_eq!(model.get_cell_content(0, 1, 1), Ok("125".to_string()));
|
|
assert!(model.undo().is_ok());
|
|
// The cell has no currency number formatting
|
|
assert_eq!(
|
|
model.get_formatted_cell_value(0, 1, 1),
|
|
Ok("100".to_string())
|
|
);
|
|
assert_eq!(model.get_cell_content(0, 1, 1), Ok("100".to_string()));
|
|
assert!(model.redo().is_ok());
|
|
// The cell has the number 125 formatted as '125$'
|
|
assert_eq!(
|
|
model.get_formatted_cell_value(0, 1, 1),
|
|
Ok("125$".to_string())
|
|
);
|
|
assert_eq!(model.get_cell_content(0, 1, 1), Ok("125".to_string()));
|
|
}
|
|
|
|
#[test]
|
|
fn can_undo_can_redo() {
|
|
let model = new_empty_model();
|
|
let mut model = UserModel::from_model(model);
|
|
assert!(!model.can_undo());
|
|
assert!(!model.can_redo());
|
|
|
|
assert!(model.undo().is_ok());
|
|
assert!(model.redo().is_ok());
|
|
}
|