use formualizer_common::LiteralValue;
use formualizer_eval::engine::{Engine, EvalConfig};
use formualizer_eval::test_workbook::TestWorkbook;
use formualizer_parse::parser::parse;
#[test]
fn io_compressed_range_demand_driven() {
let cfg = EvalConfig::default().with_range_expansion_limit(0); let wb = TestWorkbook::new();
let mut engine: Engine<_> = Engine::new(wb, cfg);
engine
.set_cell_value("Sheet1", 3, 4, LiteralValue::Text("X".into()))
.unwrap();
engine
.set_cell_value("Sheet1", 2, 2, LiteralValue::Number(5.0))
.unwrap();
let p2 = parse("=B2").unwrap();
engine.set_cell_formula("Sheet1", 2, 16, p2).unwrap();
let s2 = parse("=D3").unwrap();
engine.set_cell_formula("Sheet1", 2, 19, s2).unwrap();
let d7 = parse("=SUMIF(S:S, D3, P:P)").unwrap();
engine.set_cell_formula("Sheet1", 7, 4, d7).unwrap();
let v = engine
.evaluate_cell("Sheet1", 7, 4)
.unwrap()
.unwrap_or(LiteralValue::Empty);
assert!(matches!(v, LiteralValue::Number(n) if (n-5.0).abs() < 1e-9));
}