UPDATE: Dump of initial files

This commit is contained in:
Nicolás Hatcher
2023-11-18 21:26:18 +01:00
commit c5b8efd83d
279 changed files with 42654 additions and 0 deletions

View File

@@ -0,0 +1,230 @@
#![allow(clippy::unwrap_used)]
use crate::expressions::types::{Area, CellReferenceIndex};
use crate::test::util::new_empty_model;
#[test]
fn test_move_formula() {
let mut model = new_empty_model();
let source = &CellReferenceIndex {
sheet: 0,
column: 1,
row: 1,
};
let value = "=A2+3";
let target = &CellReferenceIndex {
sheet: 0,
column: 10,
row: 10,
};
// if we move just one point formula does ot change
let area = &Area {
sheet: 0,
row: 1,
column: 1,
width: 1,
height: 1,
};
let t = model.move_cell_value_to_area(value, source, target, area);
assert!(t.is_ok());
assert_eq!(t.unwrap(), "=A2+3");
// if we move a 2x2 square formula does change
let area = &Area {
sheet: 0,
row: 1,
column: 1,
width: 2,
height: 2,
};
let t = model.move_cell_value_to_area(value, source, target, area);
assert!(t.is_ok());
assert_eq!(t.unwrap(), "=J11+3");
}
#[test]
fn test_move_formula_wrong_args() {
let mut model = new_empty_model();
let t = model.add_sheet("Sheet2");
assert!(t.is_ok());
let source = &CellReferenceIndex {
sheet: 0,
column: 5,
row: 5,
};
let value = "=A2+3";
let target = &CellReferenceIndex {
sheet: 0,
column: 10,
row: 10,
};
// different sheet
{
let area = &Area {
sheet: 1,
row: 5,
column: 5,
width: 1,
height: 1,
};
let t = model.move_cell_value_to_area(value, source, target, area);
assert_eq!(
t,
Err("Source and area are in different sheets".to_string())
);
}
// not in area
{
let area = &Area {
sheet: 0,
row: 6,
column: 4,
width: 5,
height: 5,
};
let t = model.move_cell_value_to_area(value, source, target, area);
assert_eq!(t, Err("Source is outside the area".to_string()));
}
{
let area = &Area {
sheet: 0,
row: 1,
column: 4,
width: 5,
height: 2,
};
let t = model.move_cell_value_to_area(value, source, target, area);
assert_eq!(t, Err("Source is outside the area".to_string()));
}
{
let area = &Area {
sheet: 0,
row: 1,
column: 6,
width: 20,
height: 5,
};
let t = model.move_cell_value_to_area(value, source, target, area);
assert_eq!(t, Err("Source is outside the area".to_string()));
}
// Invalid sheet indexes
assert_eq!(
model.move_cell_value_to_area(
value,
&CellReferenceIndex {
sheet: 0,
row: 1,
column: 4,
},
&CellReferenceIndex {
sheet: 16,
row: 1,
column: 1,
},
&Area {
sheet: 0,
row: 1,
column: 4,
width: 5,
height: 2,
}
),
Err("Could not find target worksheet: Invalid sheet index".to_string())
);
assert_eq!(
model.move_cell_value_to_area(
value,
&CellReferenceIndex {
sheet: 3,
column: 1,
row: 1,
},
target,
&Area {
sheet: 3,
row: 1,
column: 1,
width: 5,
height: 5,
},
),
Err("Could not find source worksheet: Invalid sheet index".to_string())
);
}
#[test]
fn test_move_formula_rectangle() {
let mut model = new_empty_model();
let value = "=B2+C2";
let target = &CellReferenceIndex {
sheet: 0,
column: 10,
row: 10,
};
// if we move just one point formula does not change
let area = &Area {
sheet: 0,
row: 1,
column: 1,
width: 2,
height: 20,
};
assert!(model
.move_cell_value_to_area(
value,
&CellReferenceIndex {
sheet: 0,
column: 3,
row: 1,
},
target,
area
)
.is_err());
assert!(model
.move_cell_value_to_area(
value,
&CellReferenceIndex {
sheet: 0,
column: 2,
row: 1,
},
target,
area
)
.is_ok());
assert!(model
.move_cell_value_to_area(
value,
&CellReferenceIndex {
sheet: 0,
column: 1,
row: 20,
},
target,
area
)
.is_ok());
assert!(model
.move_cell_value_to_area(
value,
&CellReferenceIndex {
sheet: 0,
column: 1,
row: 21,
},
target,
area
)
.is_err());
}