UPDATE: Adds 'user model' API (#27)
* bump version for documentation * Fixes wrong doc comment * renames old APIs to be consistent
This commit is contained in:
committed by
GitHub
parent
e9fc41541b
commit
d445553d85
66
base/src/test/user_model/test_undo_redo.rs
Normal file
66
base/src/test/user_model/test_undo_redo.rs
Normal file
@@ -0,0 +1,66 @@
|
||||
#![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());
|
||||
}
|
||||
Reference in New Issue
Block a user