(1+x)^(1+y) was stringifyfied incorrectly We still need work on this FV now returns currency FV(-1,-2,1) should return #DIV/0! not #NUM!
35 lines
1.1 KiB
Rust
35 lines
1.1 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, 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", &Some(cell_reference.clone()));
|
|
assert_eq!(to_string(&t, &cell_reference), "(1+2)^3+4");
|
|
|
|
let t = parser.parse("(C5 + 3)^R4", &Some(cell_reference.clone()));
|
|
assert_eq!(to_string(&t, &cell_reference), "(C5+3)^R4");
|
|
|
|
let t = parser.parse("(C5 + 3)^(R4*6)", &Some(cell_reference.clone()));
|
|
assert_eq!(to_string(&t, &cell_reference), "(C5+3)^(R4*6)");
|
|
|
|
let t = parser.parse("(C5)^(R4)", &Some(cell_reference.clone()));
|
|
assert_eq!(to_string(&t, &cell_reference), "C5^R4");
|
|
|
|
let t = parser.parse("(5)^(4)", &Some(cell_reference.clone()));
|
|
assert_eq!(to_string(&t, &cell_reference), "5^4");
|
|
}
|