71 lines
2.2 KiB
Rust
71 lines
2.2 KiB
Rust
#![allow(clippy::panic)]
|
|
|
|
use std::collections::HashMap;
|
|
|
|
use crate::expressions::parser::stringify::to_string;
|
|
use crate::expressions::parser::Parser;
|
|
use crate::expressions::types::CellReferenceRC;
|
|
|
|
#[test]
|
|
fn exp_order() {
|
|
let worksheets = vec!["Sheet1".to_string()];
|
|
let mut parser = Parser::new(worksheets, vec![], HashMap::new());
|
|
|
|
// Reference cell is Sheet1!A1
|
|
let cell_reference = CellReferenceRC {
|
|
sheet: "Sheet1".to_string(),
|
|
row: 1,
|
|
column: 1,
|
|
};
|
|
let t = parser.parse("(1 + 2)^3 + 4", &cell_reference);
|
|
assert_eq!(to_string(&t, &cell_reference), "(1+2)^3+4");
|
|
|
|
let t = parser.parse("(C5 + 3)^R4", &cell_reference);
|
|
assert_eq!(to_string(&t, &cell_reference), "(C5+3)^R4");
|
|
|
|
let t = parser.parse("(C5 + 3)^(R4*6)", &cell_reference);
|
|
assert_eq!(to_string(&t, &cell_reference), "(C5+3)^(R4*6)");
|
|
|
|
let t = parser.parse("(C5)^(R4)", &cell_reference);
|
|
assert_eq!(to_string(&t, &cell_reference), "C5^R4");
|
|
|
|
let t = parser.parse("(5)^(4)", &cell_reference);
|
|
assert_eq!(to_string(&t, &cell_reference), "5^4");
|
|
}
|
|
|
|
#[test]
|
|
fn correct_parenthesis() {
|
|
let worksheets = vec!["Sheet1".to_string()];
|
|
let mut parser = Parser::new(worksheets, vec![], HashMap::new());
|
|
|
|
let cell_reference = CellReferenceRC {
|
|
sheet: "Sheet1".to_string(),
|
|
row: 1,
|
|
column: 1,
|
|
};
|
|
|
|
let t = parser.parse("-(1 + 1)", &cell_reference);
|
|
assert_eq!(to_string(&t, &cell_reference), "-(1+1)");
|
|
|
|
let t = parser.parse("1 - (3 + 4)", &cell_reference);
|
|
assert_eq!(to_string(&t, &cell_reference), "1-(3+4)");
|
|
|
|
let t = parser.parse("-(1.05*(0.0284 + 0.0046) - 0.0284)", &cell_reference);
|
|
assert_eq!(
|
|
to_string(&t, &cell_reference),
|
|
"-(1.05*(0.0284+0.0046)-0.0284)"
|
|
);
|
|
|
|
let t = parser.parse("1 + (3+5)", &cell_reference);
|
|
assert_eq!(to_string(&t, &cell_reference), "1+3+5");
|
|
|
|
let t = parser.parse("1 - (3+5)", &cell_reference);
|
|
assert_eq!(to_string(&t, &cell_reference), "1-(3+5)");
|
|
|
|
let t = parser.parse("(1 - 3) - (3+5)", &cell_reference);
|
|
assert_eq!(to_string(&t, &cell_reference), "1-3-(3+5)");
|
|
|
|
let t = parser.parse("1 + (3<5)", &cell_reference);
|
|
assert_eq!(to_string(&t, &cell_reference), "1+(3<5)");
|
|
}
|