FIX: Removes ununsed borders code
This commit is contained in:
committed by
Nicolás Hatcher Andrés
parent
d08fe32f97
commit
8cdb3b8c60
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
expressions::types::Area,
|
expressions::types::Area,
|
||||||
types::{Alignment, BorderItem, BorderStyle, HorizontalAlignment, VerticalAlignment},
|
types::{Alignment, HorizontalAlignment, VerticalAlignment},
|
||||||
UserModel,
|
UserModel,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -229,157 +229,6 @@ fn basic_format() {
|
|||||||
assert_eq!(style.num_fmt, "$#,##0.0000");
|
assert_eq!(style.num_fmt, "$#,##0.0000");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn basic_borders() {
|
|
||||||
let mut model = UserModel::new_empty("model", "en", "UTC").unwrap();
|
|
||||||
let range = Area {
|
|
||||||
sheet: 0,
|
|
||||||
row: 1,
|
|
||||||
column: 1,
|
|
||||||
width: 1,
|
|
||||||
height: 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
model
|
|
||||||
.update_range_style(&range, "border.left", "thin,#F1F1F1")
|
|
||||||
.unwrap();
|
|
||||||
let style = model.get_cell_style(0, 1, 1).unwrap();
|
|
||||||
assert_eq!(
|
|
||||||
style.border.left,
|
|
||||||
Some(BorderItem {
|
|
||||||
style: BorderStyle::Thin,
|
|
||||||
color: Some("#F1F1F1".to_owned()),
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
model
|
|
||||||
.update_range_style(&range, "border.left", "thin,")
|
|
||||||
.unwrap();
|
|
||||||
let style = model.get_cell_style(0, 1, 1).unwrap();
|
|
||||||
assert_eq!(
|
|
||||||
style.border.left,
|
|
||||||
Some(BorderItem {
|
|
||||||
style: BorderStyle::Thin,
|
|
||||||
color: None,
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
model
|
|
||||||
.update_range_style(&range, "border.right", "dotted,#F1F1F2")
|
|
||||||
.unwrap();
|
|
||||||
let style = model.get_cell_style(0, 1, 1).unwrap();
|
|
||||||
assert_eq!(
|
|
||||||
style.border.right,
|
|
||||||
Some(BorderItem {
|
|
||||||
style: BorderStyle::Dotted,
|
|
||||||
color: Some("#F1F1F2".to_owned()),
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
model
|
|
||||||
.update_range_style(&range, "border.top", "double,#F1F1F3")
|
|
||||||
.unwrap();
|
|
||||||
let style = model.get_cell_style(0, 1, 1).unwrap();
|
|
||||||
assert_eq!(
|
|
||||||
style.border.top,
|
|
||||||
Some(BorderItem {
|
|
||||||
style: BorderStyle::Double,
|
|
||||||
color: Some("#F1F1F3".to_owned()),
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
model
|
|
||||||
.update_range_style(&range, "border.bottom", "medium,#F1F1F4")
|
|
||||||
.unwrap();
|
|
||||||
let style = model.get_cell_style(0, 1, 1).unwrap();
|
|
||||||
assert_eq!(
|
|
||||||
style.border.bottom,
|
|
||||||
Some(BorderItem {
|
|
||||||
style: BorderStyle::Medium,
|
|
||||||
color: Some("#F1F1F4".to_owned()),
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
while model.can_undo() {
|
|
||||||
model.undo().unwrap();
|
|
||||||
}
|
|
||||||
|
|
||||||
let style = model.get_cell_style(0, 1, 1).unwrap();
|
|
||||||
assert_eq!(style.border.left, None);
|
|
||||||
assert_eq!(style.border.top, None);
|
|
||||||
assert_eq!(style.border.right, None);
|
|
||||||
assert_eq!(style.border.bottom, None);
|
|
||||||
|
|
||||||
while model.can_redo() {
|
|
||||||
model.redo().unwrap();
|
|
||||||
}
|
|
||||||
|
|
||||||
let style = model.get_cell_style(0, 1, 1).unwrap();
|
|
||||||
assert_eq!(
|
|
||||||
style.border.left,
|
|
||||||
Some(BorderItem {
|
|
||||||
style: BorderStyle::Thin,
|
|
||||||
color: None,
|
|
||||||
})
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
style.border.right,
|
|
||||||
Some(BorderItem {
|
|
||||||
style: BorderStyle::Dotted,
|
|
||||||
color: Some("#F1F1F2".to_owned()),
|
|
||||||
})
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
style.border.top,
|
|
||||||
Some(BorderItem {
|
|
||||||
style: BorderStyle::Double,
|
|
||||||
color: Some("#F1F1F3".to_owned()),
|
|
||||||
})
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
style.border.bottom,
|
|
||||||
Some(BorderItem {
|
|
||||||
style: BorderStyle::Medium,
|
|
||||||
color: Some("#F1F1F4".to_owned()),
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
let send_queue = model.flush_send_queue();
|
|
||||||
|
|
||||||
let mut model2 = UserModel::new_empty("model", "en", "UTC").unwrap();
|
|
||||||
model2.apply_external_diffs(&send_queue).unwrap();
|
|
||||||
|
|
||||||
let style = model2.get_cell_style(0, 1, 1).unwrap();
|
|
||||||
assert_eq!(
|
|
||||||
style.border.left,
|
|
||||||
Some(BorderItem {
|
|
||||||
style: BorderStyle::Thin,
|
|
||||||
color: None,
|
|
||||||
})
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
style.border.right,
|
|
||||||
Some(BorderItem {
|
|
||||||
style: BorderStyle::Dotted,
|
|
||||||
color: Some("#F1F1F2".to_owned()),
|
|
||||||
})
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
style.border.top,
|
|
||||||
Some(BorderItem {
|
|
||||||
style: BorderStyle::Double,
|
|
||||||
color: Some("#F1F1F3".to_owned()),
|
|
||||||
})
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
style.border.bottom,
|
|
||||||
Some(BorderItem {
|
|
||||||
style: BorderStyle::Medium,
|
|
||||||
color: Some("#F1F1F4".to_owned()),
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn basic_alignment() {
|
fn basic_alignment() {
|
||||||
let mut model = UserModel::new_empty("model", "en", "UTC").unwrap();
|
let mut model = UserModel::new_empty("model", "en", "UTC").unwrap();
|
||||||
@@ -567,142 +416,6 @@ fn basic_wrap_text() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn more_basic_borders() {
|
|
||||||
let mut model = UserModel::new_empty("model", "en", "UTC").unwrap();
|
|
||||||
let range = Area {
|
|
||||||
sheet: 0,
|
|
||||||
row: 1,
|
|
||||||
column: 1,
|
|
||||||
width: 1,
|
|
||||||
height: 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
model
|
|
||||||
.update_range_style(&range, "border.left", "thick,#F1F1F1")
|
|
||||||
.unwrap();
|
|
||||||
let style = model.get_cell_style(0, 1, 1).unwrap();
|
|
||||||
assert_eq!(
|
|
||||||
style.border.left,
|
|
||||||
Some(BorderItem {
|
|
||||||
style: BorderStyle::Thick,
|
|
||||||
color: Some("#F1F1F1".to_owned()),
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
model
|
|
||||||
.update_range_style(&range, "border.left", "slantDashDot,#F1F1F1")
|
|
||||||
.unwrap();
|
|
||||||
let style = model.get_cell_style(0, 1, 1).unwrap();
|
|
||||||
assert_eq!(
|
|
||||||
style.border.left,
|
|
||||||
Some(BorderItem {
|
|
||||||
style: BorderStyle::SlantDashDot,
|
|
||||||
color: Some("#F1F1F1".to_owned()),
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
model
|
|
||||||
.update_range_style(&range, "border.left", "mediumDashDot,#F1F1F1")
|
|
||||||
.unwrap();
|
|
||||||
let style = model.get_cell_style(0, 1, 1).unwrap();
|
|
||||||
assert_eq!(
|
|
||||||
style.border.left,
|
|
||||||
Some(BorderItem {
|
|
||||||
style: BorderStyle::MediumDashDot,
|
|
||||||
color: Some("#F1F1F1".to_owned()),
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
model
|
|
||||||
.update_range_style(&range, "border.left", "mediumDashDotDot,#F1F1F1")
|
|
||||||
.unwrap();
|
|
||||||
let style = model.get_cell_style(0, 1, 1).unwrap();
|
|
||||||
assert_eq!(
|
|
||||||
style.border.left,
|
|
||||||
Some(BorderItem {
|
|
||||||
style: BorderStyle::MediumDashDotDot,
|
|
||||||
color: Some("#F1F1F1".to_owned()),
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
model
|
|
||||||
.update_range_style(&range, "border.left", "mediumDashed,#F1F1F1")
|
|
||||||
.unwrap();
|
|
||||||
let style = model.get_cell_style(0, 1, 1).unwrap();
|
|
||||||
assert_eq!(
|
|
||||||
style.border.left,
|
|
||||||
Some(BorderItem {
|
|
||||||
style: BorderStyle::MediumDashed,
|
|
||||||
color: Some("#F1F1F1".to_owned()),
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn border_errors() {
|
|
||||||
let mut model = UserModel::new_empty("model", "en", "UTC").unwrap();
|
|
||||||
let range = Area {
|
|
||||||
sheet: 0,
|
|
||||||
row: 1,
|
|
||||||
column: 1,
|
|
||||||
width: 1,
|
|
||||||
height: 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
assert_eq!(
|
|
||||||
model.update_range_style(&range, "border.lef", "thick,#F1F1F1"),
|
|
||||||
Err("Invalid style path: 'border.lef'.".to_string())
|
|
||||||
);
|
|
||||||
|
|
||||||
assert_eq!(
|
|
||||||
model.update_range_style(&range, "border.left", "thic,#F1F1F1"),
|
|
||||||
Err("Invalid border style: 'thic'.".to_string())
|
|
||||||
);
|
|
||||||
|
|
||||||
assert_eq!(
|
|
||||||
model.update_range_style(&range, "border.left", "thick,#F1F1F"),
|
|
||||||
Err("Invalid color: '#F1F1F'.".to_string())
|
|
||||||
);
|
|
||||||
|
|
||||||
assert_eq!(
|
|
||||||
model.update_range_style(&range, "border.left", " "),
|
|
||||||
Err("Invalid border value: ' '.".to_string())
|
|
||||||
);
|
|
||||||
|
|
||||||
assert_eq!(
|
|
||||||
model.update_range_style(&range, "border.left", "thick,#F1F1F1,thin"),
|
|
||||||
Err("Invalid border value: 'thick,#F1F1F1,thin'.".to_string())
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn empty_removes_border() {
|
|
||||||
let mut model = UserModel::new_empty("model", "en", "UTC").unwrap();
|
|
||||||
let range = Area {
|
|
||||||
sheet: 0,
|
|
||||||
row: 1,
|
|
||||||
column: 1,
|
|
||||||
width: 1,
|
|
||||||
height: 1,
|
|
||||||
};
|
|
||||||
model
|
|
||||||
.update_range_style(&range, "border.left", "mediumDashDotDot,#F1F1F1")
|
|
||||||
.unwrap();
|
|
||||||
let style = model.get_cell_style(0, 1, 1).unwrap();
|
|
||||||
assert_eq!(
|
|
||||||
style.border.left,
|
|
||||||
Some(BorderItem {
|
|
||||||
style: BorderStyle::MediumDashDotDot,
|
|
||||||
color: Some("#F1F1F1".to_owned()),
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
model.update_range_style(&range, "border.left", "").unwrap();
|
|
||||||
let style = model.get_cell_style(0, 1, 1).unwrap();
|
|
||||||
assert_eq!(style.border.left, None);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn false_removes_value() {
|
fn false_removes_value() {
|
||||||
let mut model = UserModel::new_empty("model", "en", "UTC").unwrap();
|
let mut model = UserModel::new_empty("model", "en", "UTC").unwrap();
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ use crate::{
|
|||||||
},
|
},
|
||||||
model::Model,
|
model::Model,
|
||||||
types::{
|
types::{
|
||||||
Alignment, BorderItem, BorderStyle, CellType, Col, HorizontalAlignment, SheetProperties,
|
Alignment, BorderItem, CellType, Col, HorizontalAlignment, SheetProperties, Style,
|
||||||
Style, VerticalAlignment,
|
VerticalAlignment,
|
||||||
},
|
},
|
||||||
utils::is_valid_hex_color,
|
utils::is_valid_hex_color,
|
||||||
};
|
};
|
||||||
@@ -103,37 +103,6 @@ fn color(value: &str) -> Result<Option<String>, String> {
|
|||||||
Ok(Some(value.to_owned()))
|
Ok(Some(value.to_owned()))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn border(value: &str) -> Result<Option<BorderItem>, String> {
|
|
||||||
if value.is_empty() {
|
|
||||||
return Ok(None);
|
|
||||||
}
|
|
||||||
let parts = value.split(',');
|
|
||||||
let values = parts.collect::<Vec<&str>>();
|
|
||||||
match values[..] {
|
|
||||||
[border_style, color_str] => {
|
|
||||||
let style = match border_style {
|
|
||||||
"thin" => BorderStyle::Thin,
|
|
||||||
"medium" => BorderStyle::Medium,
|
|
||||||
"thick" => BorderStyle::Thick,
|
|
||||||
"double" => BorderStyle::Double,
|
|
||||||
"dotted" => BorderStyle::Dotted,
|
|
||||||
"slantDashDot" => BorderStyle::SlantDashDot,
|
|
||||||
"mediumDashed" => BorderStyle::MediumDashed,
|
|
||||||
"mediumDashDotDot" => BorderStyle::MediumDashDotDot,
|
|
||||||
"mediumDashDot" => BorderStyle::MediumDashDot,
|
|
||||||
_ => {
|
|
||||||
return Err(format!("Invalid border style: '{border_style}'."));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
Ok(Some(BorderItem {
|
|
||||||
style,
|
|
||||||
color: color(color_str)?,
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
_ => Err(format!("Invalid border value: '{value}'.")),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn horizontal(value: &str) -> Result<HorizontalAlignment, String> {
|
fn horizontal(value: &str) -> Result<HorizontalAlignment, String> {
|
||||||
match value {
|
match value {
|
||||||
"center" => Ok(HorizontalAlignment::Center),
|
"center" => Ok(HorizontalAlignment::Center),
|
||||||
@@ -1067,18 +1036,6 @@ impl UserModel {
|
|||||||
"num_fmt" => {
|
"num_fmt" => {
|
||||||
value.clone_into(&mut style.num_fmt);
|
value.clone_into(&mut style.num_fmt);
|
||||||
}
|
}
|
||||||
"border.left" => {
|
|
||||||
style.border.left = border(value)?;
|
|
||||||
}
|
|
||||||
"border.right" => {
|
|
||||||
style.border.right = border(value)?;
|
|
||||||
}
|
|
||||||
"border.top" => {
|
|
||||||
style.border.top = border(value)?;
|
|
||||||
}
|
|
||||||
"border.bottom" => {
|
|
||||||
style.border.bottom = border(value)?;
|
|
||||||
}
|
|
||||||
"alignment" => {
|
"alignment" => {
|
||||||
if !value.is_empty() {
|
if !value.is_empty() {
|
||||||
return Err(format!("Alignment must be empty, but found: '{value}'."));
|
return Err(format!("Alignment must be empty, but found: '{value}'."));
|
||||||
|
|||||||
Reference in New Issue
Block a user